我的数据库中有很多表,这些表使用用户身份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中编写它。...
有什么想法吗?
答案 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();