ASP.NETCore2.0MVC中怎么獲取當(dāng)前登錄用戶信息

這篇文章給大家介紹ASP.NET Core 2.0 MVC中怎么獲取當(dāng)前登錄用戶信息,內(nèi)容非常詳細(xì),感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。

創(chuàng)新互聯(lián)建站服務(wù)項(xiàng)目包括永春網(wǎng)站建設(shè)、永春網(wǎng)站制作、永春網(wǎng)頁制作以及永春網(wǎng)絡(luò)營銷策劃等。多年來,我們專注于互聯(lián)網(wǎng)行業(yè),利用自身積累的技術(shù)優(yōu)勢、行業(yè)經(jīng)驗(yàn)、深度合作伙伴關(guān)系等,向廣大中小型企業(yè)、政府機(jī)構(gòu)等提供互聯(lián)網(wǎng)行業(yè)的解決方案,永春網(wǎng)站推廣取得了明顯的社會效益與經(jīng)濟(jì)效益。目前,我們服務(wù)的客戶以成都為中心已經(jīng)輻射到永春省份的部分城市,未來相信會繼續(xù)擴(kuò)大服務(wù)區(qū)域并繼續(xù)獲得客戶的支持與信任!

使用Session存儲當(dāng)前登錄的用戶信息

       首先,在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了。當(dāng)然現(xiàn)在也只是能在Controller中獲取到Session對象,如果想在別的類文件中使用到Session對象,我們需要注入IHttpContextAccessor對象。這里,我們可以使用nuget添加Microsoft.AspNetCore.Http.Extensions這個(gè)程序集,方便我們對于Session進(jìn)行操作。
       因?yàn)槲覀儾捎渺o態(tài)類作為當(dāng)前登錄用戶的載體,而靜態(tài)類不能擁有實(shí)例構(gòu)造函數(shù),所以我采用創(chuàng)建一個(gè)配置方法來進(jìn)行注入,CurrentUser類如下所示。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
public static class CurrentUser
{
   #region Initialize

   private static IHttpContextAccessor _httpContextAccessor;

   private static ISession _session => _httpContextAccessor.HttpContext.Session;

   public static void Configure(IHttpContextAccessor httpContextAccessor)
   {
       _httpContextAccessor = httpContextAccessor;
   }

   #endregion

   #region Attribute

   /// <summary>
   /// 用戶主鍵
   /// </summary>
   public static string UserOID
   {
       get => _session == null ? "" : _session.GetString("CurrentUser_UserOID");
       set => _session.SetString("CurrentUser_UserOID", !string.IsNullOrEmpty(value) ? value : "");
   }

   /// <summary>
   ///用戶編號
   /// </summary>
   public static long UserId
   {
       get => _session == null ? 0 : Convert.ToInt64(_session.GetString("CurrentUser_UserId"));
       set => _session.SetString("CurrentUser_UserId", value != 0 ? value.ToString() : "0");
   }

   /// <summary>
   /// 用戶姓名
   /// </summary>
   public static string UserName
   {
       get => _session == null ? "" : _session.GetString("CurrentUser_UserName");
       set => _session.SetString("CurrentUser_UserName", !string.IsNullOrEmpty(value) ? value : "");
   }

   /// <summary>
   /// 用戶登錄賬戶
   /// </summary>
   public static string UserAccount
   {
       get => _session == null ? "" : _session.GetString("CurrentUser_UserAccount");
       set => _session.SetString("CurrentUser_UserAccount", !string.IsNullOrEmpty(value) ? value : "");
   }

   /// <summary>
   /// 用戶頭像地址
   /// </summary>
   public static string UserImage
   {
       get => _session == null ? "" : _session.GetString("CurrentUser_UserImage");
       set => _session.SetString("CurrentUser_UserImage", !string.IsNullOrEmpty(value) ? value : "");
   }

   /// <summary>
   /// 用戶角色
   /// </summary>
   public static string UserRole
   {
       get => _session == null ? "" : _session.GetString("CurrentUser_UserRole");
       set => _session.SetString("CurrentUser_UserRole", !string.IsNullOrEmpty(value) ? value : "");
   }

   /// <summary>
   /// 主頁地址
   /// </summary>
   public static string UserPage
   {
       get => _session == null ? "" : _session.GetString("CurrentUser_UserPage");
       set => _session.SetString("CurrentUser_UserPage", !string.IsNullOrEmpty(value) ? value : "");
   }

   #endregion
}

       當(dāng)我們創(chuàng)建好了這樣一個(gè)靜態(tài)類后,我們就可以在登錄成功后,將當(dāng)前登錄的用戶信息賦值給這個(gè)靜態(tài)類,這樣我們就可以在需要使用到的地方直接使用CurrentUser這個(gè)靜態(tài)類即可。在當(dāng)時(shí)實(shí)際使用后發(fā)現(xiàn),想要獲取到登錄后存儲的用戶信息,則必須在Controller的構(gòu)造方法中調(diào)用CurrentUser的Configure方法,無形中還是增加了許多的工作量。
       Controller的構(gòu)造函數(shù)示例代碼如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
[Area("Administrator")]
[Authorize(Policy = "Administrator")]
public class HomeController : DanvicController
{
   #region Initialize

   private readonly ApplicationDbContext _context;
   private readonly ILogger _logger;
   private readonly IHomeService _service;
   private readonly IHttpContextAccessor _httpContextAccessor;
   public HomeController(IHomeService service, ILogger<HomeController> logger, IHttpContextAccessor httpContextAccessor, ApplicationDbContext context)
   {
       _service = service;
       _logger = logger;
       _httpContextAccessor = httpContextAccessor;
       _context = context;
       CurrentUser.Configure(_httpContextAccessor);
   }

   #endregion

   #region View

   #endregion
}

       登錄成功后給CurrentUser賦值的相關(guān)代碼如下所示:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
/// <summary>
/// 設(shè)置當(dāng)前登錄用戶
/// </summary>
public async Task SetCurrentUser(string oid, IHttpContextAccessor httpContextAccessor, ApplicationDbContext context)
{
   CurrentUser.Configure(httpContextAccessor);

   var user = await PSURepository.GetUserByOIDAsync(oid, context);

   if (user != null)
   {
       string role = string.Empty;
       switch (user.AccountType)
       {
           case 0:
               role = "Administrator";
               break;
           case 1:
               role = "Instructor";
               break;
           case 2:
               role = "Student";
               break;
       }

       CurrentUser.UserAccount = user.Account;
       CurrentUser.UserId = user.Id;
       CurrentUser.UserImage = user.ImageSrc;
       CurrentUser.UserName = user.Name;
       CurrentUser.UserOID = user.IdentityUserOID;
       CurrentUser.UserRole = role;
       CurrentUser.UserPage = user.HomePage;
   }
}

關(guān)于ASP.NET Core 2.0 MVC中怎么獲取當(dāng)前登錄用戶信息就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,可以學(xué)到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

網(wǎng)頁名稱:ASP.NETCore2.0MVC中怎么獲取當(dāng)前登錄用戶信息
瀏覽地址:http://muchs.cn/article28/ghigjp.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站維護(hù)、企業(yè)建站網(wǎng)站策劃、搜索引擎優(yōu)化標(biāo)簽優(yōu)化、靜態(tài)網(wǎng)站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

網(wǎng)站優(yōu)化排名