怎么在Asp.Net Core中利用Session實現(xiàn)身份驗證?很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細講解,有這方面需求的人可以來學習下,希望你能有所收獲。
專注于為中小企業(yè)提供成都網(wǎng)站設(shè)計、成都網(wǎng)站制作服務(wù),電腦端+手機端+微信端的三站合一,更高效的管理,為中小企業(yè)潢川免費做網(wǎng)站提供優(yōu)質(zhì)的服務(wù)。我們立足成都,凝聚了一批互聯(lián)網(wǎng)行業(yè)人才,有力地推動了千余家企業(yè)的穩(wěn)健成長,幫助中小企業(yè)通過網(wǎng)站建設(shè)實現(xiàn)規(guī)模擴充和轉(zhuǎn)變。每種驗證方式都有適合它的場景:
1.Windowss身份驗證通常用于企業(yè)內(nèi)部環(huán)境,Windows Active Directory就是基于windows平臺的身份驗證實現(xiàn);
2.Forms身份驗證是Asp.Net框架中提出的另一種驗證方式;
3.passport身份驗證是微軟提供的基于自己的lives賬號實現(xiàn)的單點認證服務(wù)。
Asp.net Core驗證碼登錄遇到兩個小問題
第一是在Asp.net Core中引用dll,以往我們引用DLL都是直接引用,在Core里這樣是不行的,必須基于NuGet添加,或者基于project.json添加,然后保存VS會啟動還原類庫。
第二就是使用Session的問題,Core里使用Session需要添加Session類庫。
第一步:在你的項目上基于NuGet添加:
install-package Microsoft.AspNetCore.Session -ver 2.0 install-package Microsoft.AspNetCore.Http.Extensions -ver 2.0
第二步:修改startup.cs
在startup.cs找到方法ConfigureServices(IServiceCollection services) 注入Session(這個地方是Asp.net Core pipeline):
services.AddSession();
接下來我們要告訴Asp.net Core使用內(nèi)存存儲Session數(shù)據(jù),在Configure(IApplicationBuilder app,...)方法中添加代碼:
app.UseSession();
基于Session的身份驗證實現(xiàn)
這種方式可能是在Asp.Net框架提供的幾種驗證方式之外的最常用的身份驗證方式。
實現(xiàn)原理
1.客戶端發(fā)送身份認證數(shù)據(jù)到服務(wù)器端
2.服務(wù)器收到并驗證后將用戶信息保存到Session對象中,然后生成對應(yīng)的標識并將標識寫入cookie中
3.當客戶端下次請求時帶上該cookie標識
4.服務(wù)器通過該cookie標識從session對象中獲取對應(yīng)的用戶信息
Asp.Net Core中的Session身份認證實現(xiàn)
基于Session的身份認證并不是Asp.Net Core中推薦的認證方式,因為Asp.Net Core中有更高級的Forms身份認證方式,不過在這里不是本文章的主題,我們只講如何在Asp.Net Core中實現(xiàn)基于Session的身份認證。
我們先創(chuàng)建一個用于代碼演示的基礎(chǔ)項目
dotnet new razor -n SessionSample
在startup.cs中啟用session功能
public class Startup { public void ConfigureServices(IServiceCollection services) { ... //添加session服務(wù) services.AddSession(); } public void Configure(IApplicationBuilder app, IHostingEnvironment env) { ... //啟用session app.UseSession(); app.UseMvc(); } }
創(chuàng)建一個MyPage.cs文件,我們在該類中實現(xiàn)了一個IsLogin屬性,該屬性用來判斷用戶的登陸狀態(tài):
public class MyPage:PageModel { protected bool IsLogin { get { string userId = null; //從sessin中獲取UserId對應(yīng)的用戶信息來判斷用戶是否登陸 if (HttpContext.Session.TryGetValue("UserId", out byte[] bytes)) { userId = Encoding.UTF8.GetString(bytes); } return !string.IsNullOrWhiteSpace(userId); } } }
我們已經(jīng)實現(xiàn)了驗證,現(xiàn)在缺少的是如何在session中添加UserId的信息,我們來創(chuàng)建一個Login頁面:
dotnet new page -n Login
public class LoginModel : MyPage { public void OnGet() { if(IsLogin) { //如果已經(jīng)登陸就跳轉(zhuǎn)到/Index頁面 RedirectToPage("/Index"); } } public IActionResult OnPost() { //這里我們將UserId寫入session中 HttpContext.Session.SetString("UserId", Guid.NewGuid().ToString()); return RedirectToPage("/Index"); } }
給現(xiàn)有的頁面添加驗證功能,打開Index頁面,添加如下代碼:
public class IndexModel : MyPage { public IActionResult OnGet() { if (!IsLogin) { return RedirectToPage("/Login"); } return Page(); } }
看完上述內(nèi)容是否對您有幫助呢?如果還想對相關(guān)知識有進一步的了解或閱讀更多相關(guān)文章,請關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝您對創(chuàng)新互聯(lián)網(wǎng)站建設(shè)公司,的支持。
當前標題:怎么在Asp.NetCore中利用Session實現(xiàn)身份驗證-創(chuàng)新互聯(lián)
瀏覽路徑:http://jinyejixie.com/article46/dipjeg.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供軟件開發(fā)、全網(wǎng)營銷推廣、云服務(wù)器、靜態(tài)網(wǎng)站、App設(shè)計、虛擬主機
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容