首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在ASP.NET核心中获取当前登录的用户ID?

如何在ASP.NET核心中获取当前登录的用户ID?
EN

Stack Overflow用户
提问于 2015-06-08 11:53:30
回答 14查看 305.5K关注 0票数 246

我以前使用User.Identity.GetUserId()在MVC5中这样做过,但在这里似乎不起作用。User.Identity没有GetUserId()方法。

我正在使用Microsoft.AspNet.Identity

EN

回答 14

Stack Overflow用户

发布于 2018-02-15 05:45:51

对于.NET Core2.0,获取Controller类中已登录用户的UserID只需要执行以下操作:

代码语言:javascript
复制
var userId = this.User.FindFirstValue(ClaimTypes.NameIdentifier);

代码语言:javascript
复制
var userId = HttpContext.User.FindFirstValue(ClaimTypes.NameIdentifier);

例如:

代码语言:javascript
复制
contact.OwnerID = this.User.FindFirstValue(ClaimTypes.NameIdentifier);
票数 28
EN

Stack Overflow用户

发布于 2016-10-22 15:41:02

正如这篇文章中提到的,GetUserId()方法已经移到了UserManager中。

代码语言:javascript
复制
private readonly UserManager<ApplicationUser> _userManager;

public YourController(UserManager<ApplicationUser> userManager)
{
    _userManager = userManager;
}

public IActionResult MyAction()
{
    var userId = _userManager.GetUserId(HttpContext.User);

    var model = GetSomeModelByUserId(userId);

    return View(model);
}

如果您开始了一个空项目,可能需要在startup.cs中将UserManger添加到您的服务中。否则,这种情况应该已经出现了。

票数 20
EN

Stack Overflow用户

发布于 2017-11-16 11:26:22

您必须导入Microsoft.AspNetCore.Identity和System.Security.Claims

代码语言:javascript
复制
// to get current user ID
var userId = User.FindFirstValue(ClaimTypes.NameIdentifier);

// to get current user info
var user = await _userManager.FindByIdAsync(userId);
票数 14
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30701006

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档