C#.NET Core获取当前用户ID的最佳方法

时间:2018-10-31 20:04:59

标签: c# .net asp.net-core identity

我的数据库中有很多表,这些表使用用户身份User.Id作为外键。现在,在很多请求中,我需要执行以下几行,以防万一User为空(即使我向函数添加[Authorise]过滤器)。

var user = await _userManager.GetUserAsync(User);
if (user == null)
{
    ViewBag.ErrorCode = "1201";
    ViewBag.ErrorMsg = "User not found";
    return View("HandledError");
}
var userId = user.Id;

有人知道最好的方式来访问此功能,而无需为每个功能复制相同的代码吗?

我想我可以有一个检索ID的函数...并在Null上引发异常..但是无论如何,我仍然需要每次都在try catch中编写它。...

有什么想法吗?

2 个答案:

答案 0 :(得分:3)

用户ID是一个声明。您可以通过以下方式获取它:

var userId = User.FindFirstValue(ClaimTypes.NameIdentifier);

注意:您需要为System.Security.Claims添加一个use。

答案 1 :(得分:0)

在WebApi 2中,您可以在ApiController的方法中使用RequestContext.Principal

string id;
id = User.Identity.GetUserId();
id = RequestContext.Principal.Identity.GetUserId();