日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
ASP.NETCore2.0MVC中怎么獲取當(dāng)前登錄用戶信息

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

創(chuàng)新互聯(lián)建站服務(wù)項目包括永春網(wǎng)站建設(shè)、永春網(wǎng)站制作、永春網(wǎng)頁制作以及永春網(wǎng)絡(luò)營銷策劃等。多年來,我們專注于互聯(lián)網(wǎng)行業(yè),利用自身積累的技術(shù)優(yōu)勢、行業(yè)經(jīng)驗、深度合作伙伴關(guān)系等,向廣大中小型企業(yè)、政府機構(gòu)等提供互聯(lián)網(wǎng)行業(yè)的解決方案,永春網(wǎng)站推廣取得了明顯的社會效益與經(jīng)濟(jì)效益。目前,我們服務(wù)的客戶以成都為中心已經(jīng)輻射到永春省份的部分城市,未來相信會繼續(xù)擴大服務(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這個程序集,方便我們對于Session進(jìn)行操作。
       因為我們采用靜態(tài)類作為當(dāng)前登錄用戶的載體,而靜態(tài)類不能擁有實例構(gòu)造函數(shù),所以我采用創(chuàng)建一個配置方法來進(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

   ///
   /// 用戶主鍵
   ///

   public static string UserOID
   {
       get => _session == null ? "" : _session.GetString("CurrentUser_UserOID");
       set => _session.SetString("CurrentUser_UserOID", !string.IsNullOrEmpty(value) ? value : "");
   }

   ///
   ///用戶編號
   ///

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

   ///
   /// 用戶姓名
   ///

   public static string UserName
   {
       get => _session == null ? "" : _session.GetString("CurrentUser_UserName");
       set => _session.SetString("CurrentUser_UserName", !string.IsNullOrEmpty(value) ? value : "");
   }

   ///
   /// 用戶登錄賬戶
   ///

   public static string UserAccount
   {
       get => _session == null ? "" : _session.GetString("CurrentUser_UserAccount");
       set => _session.SetString("CurrentUser_UserAccount", !string.IsNullOrEmpty(value) ? value : "");
   }

   ///
   /// 用戶頭像地址
   ///

   public static string UserImage
   {
       get => _session == null ? "" : _session.GetString("CurrentUser_UserImage");
       set => _session.SetString("CurrentUser_UserImage", !string.IsNullOrEmpty(value) ? value : "");
   }

   ///
   /// 用戶角色
   ///

   public static string UserRole
   {
       get => _session == null ? "" : _session.GetString("CurrentUser_UserRole");
       set => _session.SetString("CurrentUser_UserRole", !string.IsNullOrEmpty(value) ? value : "");
   }

   ///
   /// 主頁地址
   ///

   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)建好了這樣一個靜態(tài)類后,我們就可以在登錄成功后,將當(dāng)前登錄的用戶信息賦值給這個靜態(tài)類,這樣我們就可以在需要使用到的地方直接使用CurrentUser這個靜態(tài)類即可。在當(dāng)時實際使用后發(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 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
/// 
/// 設(shè)置當(dāng)前登錄用戶
///

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é)到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。


分享標(biāo)題:ASP.NETCore2.0MVC中怎么獲取當(dāng)前登錄用戶信息
網(wǎng)頁網(wǎng)址:http://www.dlmjj.cn/article/ghigjp.html