上一篇提到 [ASP.NET MVC][Owin] 用最簡單 Cookie 認證方式,
這次改換 ASP.NET Core 的 Microsoft.AspNetCore.Authentication.Cookies 練習最簡單的 Cookie 認證與授權,
- 在 project.json 的 dependencies 加入
"Microsoft.AspNetCore.Authentication.Cookies": "1.0.0"
並記得每次加完要進行套件還原(Visual Studio 會自動套件還原),自己寫指令則到專案目錄下,用 Command Line 輸入 dotnet restore 手動還原
- 在 Startup 類別的 Configuration 加上使用 CookieAuthentication 的方式
app.UseCookieAuthentication(new CookieAuthenticationOptions() { AuthenticationScheme = "MyCookieMiddlewareInstance", LoginPath = new PathString("/Test/Index/"), AutomaticAuthenticate = true, AutomaticChallenge = true });
CookieAuthenticationOption 的屬性可參考官網說明,在最下方會提供參考連結
-
最簡單的登入範例,很重要的是 ClaimsIdentity 建構式第二個參數是 authenticationType 一定要填,不然驗證沒有作用 Http Response Hreaders 也不會有 Set-Cookie
public async Task<IActionResult> Login() { var claims = new List<Claim>() { new Claim(ClaimTypes.Name, "Herry"), new Claim(ClaimTypes.Role, "Users") }; var claimsIdentity = new ClaimsIdentity(claims, "myTest"); var principal = new ClaimsPrincipal(claimsIdentity); await HttpContext.Authentication.SignInAsync("MyCookieMiddlewareInstance", principal); return Ok(); }
- 想授權哪個 Controller 或 Action 的方式一樣沒變,例如
[Authorize] public IActionResult Index() { return View(); }
參考文章