亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > .NET > 正文

ASP.NET學習CORE中使用Cookie身份認證方法

2024-07-10 13:32:55
字體:
來源:轉載
供稿:網友

大家在使用ASP.NET的時候一定都用過FormsAuthentication做登錄用戶的身份認證,FormsAuthentication的核心就是Cookie,ASP.NET會將用戶名存儲在Cookie中。

現在到了ASP.NET CORE的時代,但是ASP.NET CORE中沒有FormsAuthentication這個東西,那么怎么做身份認證呢?答案是ASP.NET CORE已經為我們內置了Cookie身份認證的功能,而且使用起來非常方便,注意本文是基于ASP.NET CORE 2.0版本來闡述Cookie認證方式的。

1.從ASP.NET CORE OWIN框架中啟用Cookie身份認證功能

要在ASP.NET CORE中使用Cookie身份認證,第一步就是在項目中的OWIN框架文件Startup.cs中啟用Cookie身份認證中間件。

首先我們在Startup中的ConfigureServices方法中使用services.AddAuthentication注冊Cookie認證服務,如下代碼所示:

public void ConfigureServices(IServiceCollection services){  services.AddMvc();  //注冊Cookie認證服務  services.AddAuthentication(CookieAuthenticationDefaults.AuthenticationScheme).AddCookie();}

然后在Startup中的Configure方法中使用app.UseAuthentication啟用Cookie認證中間件(注意其中app.UseAuthentication和app.UseMvc的調用順序不能反),如下代碼所示:

public void Configure(IApplicationBuilder app, IHostingEnvironment env){  if (env.IsDevelopment())  {    app.UseDeveloperExceptionPage();    app.UseBrowserLink();  }  else  {    app.UseExceptionHandler("/Home/Error");  }  app.UseStaticFiles();  //注意app.UseAuthentication方法一定要放在下面的app.UseMvc方法前面,否者后面就算調用HttpContext.SignInAsync進行用戶登錄后,使用  //HttpContext.User還是會顯示用戶沒有登錄,并且HttpContext.User.Claims讀取不到登錄用戶的任何信息。  //這說明Asp.Net OWIN框架中MiddleWare的調用順序會對系統功能產生很大的影響,各個MiddleWare的調用順序一定不能反  app.UseAuthentication();  app.UseMvc(routes =>  {    routes.MapRoute(      name: "default",      template: "{controller=Home}/{action=Index}/{id?}");  });      }

2.登錄用戶

在ASP.NET CORE中使用Cookie認證登錄用戶的方法和傳統的FormsAuthentication不太一樣,大致步驟如下:

創建Claim類型的數組,將登錄用戶的所有信息(比如用戶名)存儲在Claim類型的字符串鍵值對中
將上面創建的Claim類型的數組傳入ClaimsIdentity中,用來構造一個ClaimsIdentity對象
將上面創建的ClaimsIdentity對象傳入ClaimsPrincipal中,用來構造一個ClaimsPrincipal對象
調用HttpContext.SignInAsync方法,傳入上面創建的ClaimsPrincipal對象,完成用戶登錄
所以我們可以看到整個ASP.NET CORE的Cookie認證登錄流程比以前ASP.NET的FormsAuthentication還是要復雜許多,畢竟以前一個FormsAuthentication.SetAuthCookie方法就搞定了。

在本文的例子中我們在項目中默認的HomeController中創建了一個Acion方法Login,來實現用戶登錄的代碼。當然這里我們實現的是最簡的Cookie登錄,下面代碼中實際上還可以設置Cookie是否持久化、Cookie多久過期、存儲登錄用戶信息的Cookie的名字是什么等,我們就不做過多介紹了,大家可以閱讀本文最后推薦的兩份官方文檔了解更多。

Login方法的代碼如下:

/// <summary>/// 該Action登錄用戶Wangdacui到Asp.Net Core/// </summary>public IActionResult Login() {	//下面的變量claims是Claim類型的數組,Claim是string類型的鍵值對,所以claims數組中可以存儲任意個和用戶有關的信息,	//不過要注意這些信息都是加密后存儲在客戶端瀏覽器cookie中的,所以最好不要存儲太多特別敏感的信息,這里我們只存儲了用戶名到claims數組,	//表示當前登錄的用戶是誰	var claims = new[] {		new Claim("UserName", "Wangdacui")	};	var claimsIdentity = new ClaimsIdentity(claims, CookieAuthenticationDefaults.AuthenticationScheme);	ClaimsPrincipal user = new ClaimsPrincipal(claimsIdentity);	//登錄用戶,相當于ASP.NET中的FormsAuthentication.SetAuthCookie	HttpContext.SignInAsync(CookieAuthenticationDefaults.AuthenticationScheme, user).Wait();	//可以使用HttpContext.SignInAsync方法的重載來定義持久化cookie存儲用戶認證信息,例如下面的代碼就定義了用戶登錄后60分鐘內cookie都會保留在客戶端計算機硬盤上,	//即便用戶關閉了瀏覽器,60分鐘內再次訪問站點仍然是處于登錄狀態,除非調用Logout方法注銷登錄。	/*  HttpContext.SignInAsync(  CookieAuthenticationDefaults.AuthenticationScheme,  user, new AuthenticationProperties() { IsPersistent = true, ExpiresUtc = DateTimeOffset.Now.AddMinutes(60) }).Wait();  */	return View();}

3.讀取登錄用戶信息

那么用戶登錄后怎么將登錄用戶的信息(比如用戶名)讀取出來呢?我們在HomeController的Index方法中演示了如何判斷當前用戶是否已經登錄,并且讀出登錄用戶的用戶名,Index方法的代碼如下所示:

/// <summary>/// 該Action判斷用戶是否已經登錄,如果已經登錄,那么讀取登錄用戶的用戶名/// </summary>public IActionResult Index(){  //如果HttpContext.User.Identity.IsAuthenticated為true,  //或者HttpContext.User.Claims.Count()大于0表示用戶已經登錄  if (HttpContext.User.Identity.IsAuthenticated)  {    //這里通過 HttpContext.User.Claims 可以將我們在Login這個Action中存儲到cookie中的所有    //claims鍵值對都讀出來,比如我們剛才定義的UserName的值Wangdacui就在這里讀取出來了    var userName = HttpContext.User.Claims.First().Value;  }  return View();}

4.注銷用戶

那么登錄用戶后怎么注銷登錄呢?我們在HomeController的Logout方法中演示了如何注銷登錄的用戶,代碼如下所示:

/// <summary>/// 該Action從Asp.Net Core中注銷登錄的用戶/// </summary>public IActionResult Logout(){  //注銷登錄的用戶,相當于ASP.NET中的FormsAuthentication.SignOut   HttpContext.SignOutAsync().Wait();  return View();}

前面說了實際上在ASP.NET CORE的Cookie認證中還可以設置Cookie的名字、是否持久化存儲等。

以上就是本次小編整理的全部內容,感謝你對VeVb武林網的支持。


注:相關教程知識閱讀請移步到ASP.NET教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美美女15p| 国产精品直播网红| 97精品一区二区视频在线观看| 综合网日日天干夜夜久久| 午夜精品在线视频| 久久精品久久久久久国产 免费| 一区二区国产精品视频| 午夜精品久久久久久久久久久久久| 亚洲一区二区久久久久久久| 国产成人激情视频| 亚洲无限乱码一二三四麻| 精品久久在线播放| 97视频在线观看亚洲| 亚洲欧美激情另类校园| 久久99久久久久久久噜噜| 成人黄色网免费| 欧美疯狂性受xxxxx另类| 久久久久久久影视| 日韩免费不卡av| 亚洲视频视频在线| 久久人人爽人人爽爽久久| 久久精品视频亚洲| 国产一区深夜福利| 亚洲国产欧美自拍| 国产欧美精品一区二区三区介绍| 亚洲第一视频在线观看| 欧美专区福利在线| 欧美性猛交xxxx久久久| 亚洲国产精品嫩草影院久久| 亚洲国内高清视频| 国产伦精品免费视频| 国产精品中文字幕久久久| 中文字幕精品一区久久久久| 亚洲国产又黄又爽女人高潮的| 久久人人爽亚洲精品天堂| 国产精品久久久久久中文字| 97视频免费在线看| 国内精久久久久久久久久人| 欧美人在线观看| 超碰日本道色综合久久综合| 日韩在线观看免费| 日本sm极度另类视频| 国内精品久久久久久影视8| 亚洲自拍欧美色图| 国产精品一区二区三区久久久| 欧美另类99xxxxx| 2025国产精品视频| 亚洲精品久久久久久久久| 中文字幕日韩免费视频| 欧美日韩国产123| 欧美性猛交99久久久久99按摩| 欧美国产亚洲视频| 久久久久久久国产精品| 精品久久久久久久久久久久久| 久久99亚洲热视| 国产91对白在线播放| 在线观看免费高清视频97| 午夜精品理论片| 精品久久久一区| 欧美亚洲日本黄色| 九九热99久久久国产盗摄| 成人福利在线视频| 亚洲精品美女在线| 国产91在线播放精品91| 欧美日韩国内自拍| 亚洲成人在线网| 亚洲黄页网在线观看| 国产精品久久久久久搜索| 91精品国产91久久久久福利| 伊人av综合网| 国产精品亚洲аv天堂网| 日韩欧美精品免费在线| 一区二区三区www| 91大神福利视频在线| 最近免费中文字幕视频2019| 国产日韩欧美在线播放| 国产91在线播放| 欧美午夜精品久久久久久人妖| 国产精品99一区| 久久69精品久久久久久国产越南| 欧美另类第一页| 久久久国产精品一区| 亚洲欧洲在线看| 超碰97人人做人人爱少妇| 美女久久久久久久| 91a在线视频| 亚洲午夜激情免费视频| 国产精品99久久久久久www| 欧美综合一区第一页| 精品久久久久久亚洲精品| 日韩av成人在线| 夜色77av精品影院| 久久精品国产69国产精品亚洲| www.亚洲一区| 色综合男人天堂| 久久久久久久久久久免费精品| 日韩在线中文视频| 欧美日韩一区二区免费视频| 日韩成人av在线播放| 精品网站999www| 国产在线观看91精品一区| 视频直播国产精品| 国产一区玩具在线观看| 91精品国产91| 成人福利网站在线观看| 成人亲热视频网站| 欧美丰满少妇xxxxx做受| 亚洲最新视频在线| 久久久久久久影视| 久久躁日日躁aaaaxxxx| 91国在线精品国内播放| 欧美理论电影在线观看| www国产精品com| 日韩电影免费在线观看中文字幕| 中文字幕欧美日韩精品| 欧美成人国产va精品日本一级| 草民午夜欧美限制a级福利片| 欧美日韩激情小视频| 欧美黑人狂野猛交老妇| 在线免费观看羞羞视频一区二区| 国产日韩欧美一二三区| 久久99精品视频一区97| 成人免费视频a| 欧美成人午夜影院| 国产视频一区在线| 欧美最猛黑人xxxx黑人猛叫黄| 国产成人在线亚洲欧美| 亚洲欧美在线看| 亚洲欧美日韩视频一区| 亚洲一区二区久久久| 亚洲精品美女在线观看播放| 美日韩丰满少妇在线观看| 国产亚洲aⅴaaaaaa毛片| 98精品国产自产在线观看| 久久影院中文字幕| 日韩国产高清视频在线| 日韩福利在线播放| 91久久久国产精品| 日韩一区视频在线| 一本久久综合亚洲鲁鲁| 91精品免费视频| 精品亚洲一区二区三区四区五区| 亚洲性日韩精品一区二区| 国产美女扒开尿口久久久| 国产不卡av在线免费观看| 欧美高清视频在线播放| 高跟丝袜欧美一区| 最近日韩中文字幕中文| 欧美成人午夜激情| 亚洲少妇激情视频| 91产国在线观看动作片喷水| 爱福利视频一区| 欧美日韩免费观看中文| 欧美黑人狂野猛交老妇| 欧美最猛性xxxxx亚洲精品| 亚洲v日韩v综合v精品v| 久久6免费高清热精品| 都市激情亚洲色图| 日韩精品在线第一页| 亚洲美女激情视频| 在线精品播放av| 欧美日韩亚洲天堂| 亚洲国产美女精品久久久久∴| 国产精品91视频|