对于如何获取当前登录用户的ID,ASP.NET Core的不同RC有很多不同的答案。我想在这里问一个明确的问题。请注意,project.json现在具有“ Microsoft.AspNetCore.Identity.EntityFrameworkCore”:“ 1.0.0”
使用RC1,您可以执行以下操作:
using Microsoft.AspNet.Identity;
using System.Security.Claims;
User.GetUserId();
但是,对于新发布的EF Core版本1,Microsoft.AspNet.Identity不是正确的版本。
有使用UserManager的建议,这似乎很多,只是为了获得当前登录的用户:
private Task<ApplicationUser> GetCurrentUserAsync() => _userManager.GetUserAsync(HttpContext.User);
var user = await GetCurrentUserAsync();
var userId = user?.Id;
我发现的另一种方法是:
private readonly UserManager<ApplicationUser> _userManager;
_userManager.GetUserId(User)
因此,对于在project.json中具有以下库的ASP.NET Core 1 RTM和EF Core 1,获取当前登录用户ID的正确方法是什么?
"Microsoft.AspNetCore.Identity.EntityFrameworkCore": "1.0.0",
"Microsoft.AspNetCore.Mvc": "1.0.0",
ASP.NET Core Identity通过DI在startup.cs中注入-这样,您只需通过构造函数注入UserManager
UserManager<ApplicationUser> userManager
然后,您可以在方法中使用以下内容
_userManager.GetUserId(User);
当您使用个人用户帐户创建新的ASP.NET Core 1项目时,这就是在示例Web应用程序中使用的方式。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句