首页 > 编程语言 >如何在ASP.NET Core中获取当前登录的用户标识

如何在ASP.NET Core中获取当前登录的用户标识

时间:2022-10-15 12:55:04浏览次数:53  
标签:Core ASP httpContextAccessor User var NET public user

直到ASP.NET Core 1.0 RC1:

它是System.Security.Claims命名空间中的User.GetUserId().

自ASP.NET Core 1.0 RC2:

您现在必须使用UserManager.您可以创建一个方法来获取当前用户:

private Task<ApplicationUser> GetCurrentUserAsync() => _userManager.GetUserAsync(HttpContext.User);

并获取对象的用户信息:

var user = await GetCurrentUserAsync();

var userId = user?.Id;
string mail = user?.Email;


ASP.NET Core 2.1和2.2中的更新:

在控制器中:

public class YourControllerNameController : Controller
{
    public IActionResult YourMethodName()
    {
        var userId =  User.FindFirstValue(ClaimTypes.NameIdentifier) // will give the user's userId
        var userName =  User.FindFirstValue(ClaimTypes.Name) // will give the user's userName
        var userEmail =  User.FindFirstValue(ClaimTypes.Email) // will give the user's Email
    }
}

在其他一些课程中:

public class OtherClass
{
    private readonly IHttpContextAccessor _httpContextAccessor;
    public OtherClass(IHttpContextAccessor httpContextAccessor)
    {
       _httpContextAccessor = httpContextAccessor;
    }

   public void YourMethodName()
   {
      var userId = _httpContextAccessor.HttpContext.User.FindFirstValue(ClaimTypes.NameIdentifier);
   }
}

然后你应该IHttpContextAccessorStartup课堂上注册如下:

public void ConfigureServices(IServiceCollection services)
{
    services.TryAddSingleton<IHttpContextAccessor, HttpContextAccessor>();

    // Or you can also register as follows

    services.AddHttpContextAccessor();
}



标签:Core,ASP,httpContextAccessor,User,var,NET,public,user
From: https://www.cnblogs.com/wugh8726254/p/16793948.html

相关文章

  • 关于无法用 https 登录 SAP ABAP Netweaver 系统的问题和解决方案
    收到一个朋友的咨询,在浏览器打开一个ABAPNetweaver系统时,报如下警告消息:无法将协议切换到HTTPS;HTTPS未配置/处于非活动状态不能进行SSO登录;不能接收浏览器登......
  • net中c#教程 如何获取系统的环境变量?
    任何应用程序,都不是独立存在的,需要与外界交互。比如与使用者交互,收集各种数据;与数据库交互,读写业务逻辑;与操作系统交互,获取各种系统变量。今天分享的,就是如何读取操作系统......
  • Netty源码解读 2022.10.15
    netty:4.1.9.Final核心概念:-Channel通道,贯穿一切。-ChannelHandler处理通道事件或响应。-ChannelHandlerInitializer用来初始化一个ChannelHandler。-ChannelHandl......
  • Metasploit训练基础-数据库模块
    数据库当今最常见的数据库通常以行和列的形式将数据存储在一系列的表中,支持用户便捷地访问、管理、修改、更新、控制和组织数据。另外,大多数数据库都使用结构化查询语言(SQ......
  • kubernetes学习笔记3资源清单
    kubernetes对象:​pod|service|replicaset|deployment|statefulset|daemonset|job|cronjob​服务发现及均衡,service|ingress​配置与存储,volume|CSI|ComfigMap|Secret|Downwa......
  • Python Flask报错:TypeError: 'NoneType' object is not subscriptable
    问题:用Flask写了一个请求,用Jmeter请求时报错;但在postman中参数发送,可以成功返回数据以及正常状态码200; 分析:request以json形式发送post请求时,需要headers 解决:he......
  • Learning and Evaluating Graph Neural Network Explanations based on Counterfactua
    目录概符号说明评价指标代码TanJ.,GengS.,FuZ.,GeY.,XuS.,LiY.andZhangY.Learningandevaluatinggraphneuralnetworkexplanationsbasedoncounter......
  • CSPNet论文详解
    摘要1,介绍2,相关工作3,改进方法3.1,CrossStagePartialNetwork3.2,ExactFusionModel4,实验4.1,实验细节4.2,消融实验4.3,实验总结5,结论6,代码解读参考资料......
  • VoVNet论文解读
    摘要1,介绍2,高效网络设计的影响因素2.1,内存访问代价2.2,GPU计算效率3,建议的方法3.1,重新思考密集连接3.2,One-ShotAggregation3.3,构建VoVNet网络4,实验5,代......
  • 未能加载文件或程序集“CefSharp.Core.dll”或它的某一个依赖项
    win2012server系统 或 win1164位系统出现CefSharp67.00:System.IO.FileNotFoundException:未能加载文件或程序集“CefSharp.Core.dll”或它的某一个依赖项。找不到......