【发布时间】:2016-06-05 06:35:36
【问题描述】:
我需要获取提出请求的用户的 ID。 在以前的 Identity 版本中,我可以这样做:
User.Identity.GetUserId();
但它似乎不再可用了。
还有类似的:
User.GetUserId();
但它总是返回 null,即使 User.Identity.IsAuthenticated 为 true 并且 User.Identity.Name 设置正确。
我应该用什么来做呢?
编辑: 我的身份验证逻辑基于[default Visual Studio 2015 template],到目前为止我的身份没有太大变化,所以如果你想检查它是如何完成的,你可以在我粘贴的github链接上简单地看到它。
【问题讨论】:
-
您能发布您的身份验证逻辑吗? GetUserId 从用户声明中检索 Id。
-
@Hazye 你到底想要什么?我的项目是基于默认模板(github.com/MyPCIsBetter/…),到目前为止我没有太大变化,你可以看看那里
-
我已经使用您提供的模板测试了 User.GetUserId() 并且工作正常。确保当前用户的 ClaimsIdentity 包含 nameidentifier 声明,因为这是上述方法能够检索用户 ID 的方式。
-
@Hazye 好吧,它没有。我现在意识到我正在处理的代码使用基于令牌的身份验证(用于 API),它基于这个答案:stackoverflow.com/questions/29048122/…。 User.GetUserId 在使用原始/内置身份验证的控制器中运行良好,但是当我使用已链接的身份验证时,没有 nameidentifier 也没有 User.GetUserId。看来我需要实现它。
-
@Hezye 你知道如何设置 nameidentifier 声明以使其最终起作用吗?
标签: asp.net asp.net-core asp.net-identity-3