這篇文章給大家介紹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)中,添加
在Configure(IApplicationBuilder app, IHostingEnvironment env)中添加
這樣,我們就可以在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