在 http:// ASP.NET Core 中使用Cookie中間件
ASP.NET Core 提供了Cookie中間件來序列化用戶主題到一個加密的Cookie中并且在后來的請求中校驗這個Cookie,再現用戶并且分配到HttpContext對象的User屬性中。如果你想提供自己的登錄方式和用戶數據你可以使用Cookie中間件來實現獨立的功能。
添加和配置
第一步是增加Cookie中間件到你的應用中。首先使用nuget增加Microsoft.AspNetCore.Authentication.Cookies 程序包。然后添加下面的幾行代碼到Startup.cs文件的Configure方法中,且要在app.UseMvc()之前。
app.UseCookieAuthentication(new CookieAuthenticationOptions() { AuthenticationScheme = "MyCookieMiddlewareInstance", LoginPath = new PathString("/Account/Unauthorized/"), AccessDeniedPath = new PathString("/Account/Forbidden/"), AutomaticAuthenticate = true, AutomaticChallenge = true });上面的代碼片段配置了一下幾個選項;
其他選項包括設置中間件所創建的聲明的發行者,中間件存儲的cookie名稱,Cookie的域和cookie上的各種安全屬性。默認情況下Cookie中間件將使用適當的安全選項,設置HTTPONLY避免cookie在客戶端被JavaScript操作。當請求方式為HTTPS時限制Cookie的HTTPS操作。
創建Cookie
創建Cookie保存自己的信息,必須要初始化一個ClaimsPrincipal(類型)來序列化和保存你想保存的用戶信息到Cookie中。每一次的方法調用都會在你的Controller(控制器)中有一個合適的ClaimsPrincipal對象。
代碼如下:
await HttpContext.Authentication.SignInAsync("MyCookieMiddlewareInstance", principal);
上面的代碼將會創建一個加密的Cookie并且增加到當前的請求響應中。AuthenticationScheme明確規定在配置期間
退出
退出當前用戶的登錄,刪除登錄的cookie信息,可以在控制器中調用下面的方法。
代碼如下:
await HttpContext.Authentication.SignOutAsync("MyCookieMiddlewareInstance");
響應后端的變化
警告
一旦cookie創建就會成為身份單一認證的來源,即使在后臺系統已經不可用,中間件也是不知道的,并且始終保持登錄直到cookie失效。
新聞熱點
疑難解答
圖片精選