国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > .NET > 正文

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

2024-07-10 12:48:49
字體:
來源:轉載
供稿:網友

大家在使用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的名字是什么等,我們就不做過多介紹了,大家可以閱讀本文最后推薦的兩份官方文檔了解更多。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 曲阳县| 宁强县| 裕民县| 定州市| 开化县| 潜山县| 郴州市| 射洪县| 乐安县| 恩平市| 百色市| 噶尔县| 武川县| 蕲春县| 郯城县| 樟树市| 亚东县| 舒兰市| 贵阳市| 绍兴市| 准格尔旗| 曲麻莱县| 电白县| 遂宁市| 筠连县| 安仁县| 获嘉县| 南华县| 阿尔山市| 北票市| 额敏县| 巴塘县| 阿瓦提县| 合作市| 六枝特区| 梁山县| 石嘴山市| 连云港市| 宁陕县| 高雄市| 达州市|