ASP.NET Core 2.0 MVC - 获取当前登录用户信息

本文介绍了在ASP.NET Core 2.0 MVC中如何获取当前登录用户信息。作者通过创建静态用户类并利用Session存储用户数据,详细阐述了在.NET Core与.NET Framework中Session的使用差异,以及如何在不同场景下注入IHttpContextAccessor来实现全局获取用户信息的方法。
摘要由CSDN通过智能技术生成

 一、前言

  上篇实战完成后,没想到会有那么多的圈友给了那么多的支持,甚至连只是作为代码仓储的git上也给了一些小星星,真的感觉很惶恐啊,哈哈哈,毕竟代码写的很烂啊。由于上一篇只是大概说了下项目,所以准备写下这篇详细说下自己对于获取当前登录用户的设计与实现,原本准备上周末就完成的这篇,结果周六一起来,发现自己起水痘了,嗯,很悲催。。。请了一个星期的假,今天好歹头不痛,不发烧能看电脑了,就努力努力赶出来吧。

  获取当前登录用户的整体思路,我们可以通过创建一个静态的用户类,存储当前登录的用户。通过将属性值存储在session中,从而存储到服务器的内存中,做到可以在系统全局中获取当前登录用户的数据信息。

  .NET Framework平台下面的MVC与.NET Core平台下面的MVC,对于Session的使用上存在着一些的差异,主要在于如何获取到Session对象。在传统的MVC项目中我们可以直接使用HttpContext.Current.Session获取到session,从而做到对于数据的取值、赋值;而在ASP.NET Core MVC中,并没有HttpContext.Current.Session这个静态类,通过查阅微软的文档可知,我们可以通过注入IHttpContextAccessor对象的方式从而获取到session对象,解决方案如下所示。

 二、实现思路

   首先,在ASP.NET Core 中使用Session,我们需要将Session注入到ASP.NET Core的管道(pipeline)中,和我们使用MVC的方式相同,在ConfigureServices(IServiceCollection services)中,添加

1 services.AddSession();

  在Configure(IApplicationBuilder app, IHostingEnvironment env)中添加

1 app.UseSession();

  这样,我们就可以在MVC中使用到Session了。当然现在也只是能在Controller中获取到Session对象,如果想在别的类文件中使用到Session对象,我们需要注入IHttpContextAccessor对象。这里,我们可以使用nuget添加Microsoft.AspNetCore.Http.Extensions这个程序集,方便我们对于Session进行操作。

  因为我们采用静态类作为当前登录用户的载体,而静态类不能拥有实例构造函数,所以我采用创建一个配置方法来进行注入,CurrentUser类如下所示。

 1     public static class CurrentUser
 2     {
 3         #region Initialize
 4 
 5         private static IHttpContextAccessor _httpContextAccessor;
 6 
 7         private static ISession _session => _httpContextAccessor.HttpContext.Session;
 8 
 9         public static void Configure(IHttpContextAccessor httpContextAccessor)
10         {
11             _httpContextAccessor = httpContextAccessor;
12         }
13 
14         #endregion
15 
16         #region Attribute
17 
18         /// <summary>
19         /// 用户主键
20         /// </summary>
21         public static string UserOID
22         {
23             get => _sessi
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值