天天看點

任務34:Cookie-based認證實作

 用mvc來實作以下Cookie-Base的認證和授權的方式

建立一個web MVC的項目

在我的電腦的路徑:D:\MyDemos\jesse

Ctrl+滑鼠右鍵打開 CMD窗體建立一個項目

dotnet  new mvc --name MvcCookieAuthSample

任務34:Cookie-based認證實作

 預設帶這Home的Controller

任務34:Cookie-based認證實作

建立AdminController,把HomeController的内容指派過去,進行修改,隻保留一個Index的Action就可以了。

任務34:Cookie-based認證實作

views下面建立Admin檔案夾在下面建立Index.cshtml

指派About.cshtml的内容進去簡單修改一下

任務34:Cookie-based認證實作

dotnet run 執行

任務34:Cookie-based認證實作

打開位址通路admin

https://localhost:5001/admin

任務34:Cookie-based認證實作

在admin加上驗證

注意這裡的命名空間是:

任務34:Cookie-based認證實作

引入Cookies的命名空間在VSCode中會報錯。注意這裡的命名空間的名稱

任務34:Cookie-based認證實作

 AddAuthentication裡面要傳一個Scheme

CookieAuthenticationDefaults.AuthenticationScheme實際上是一個字元串的常量

任務34:Cookie-based認證實作

這個常量實際上就是常量:Cookies

任務34:Cookie-based認證實作

把Cookie添加進來。

任務34:Cookie-based認證實作

然後我們要在mvc之前,把這個middleware也添加進來。

否則我們的認證授權是不會生效的

任務34:Cookie-based認證實作

dotnet run 運作程式

這個時候我們打開位址:https://localhost:5001/admin/index

就會自動給我們跳轉到:

https://localhost:5001/Account/Login?ReturnUrl=%2Fadmin%2Findex

也就是我們現在沒法通路admin這個頁面了。

接下來我們來模拟登入的過程

Controllers下建立:

AccountController.cs

任務34:Cookie-based認證實作

SignInAsync第二個參數需呀傳入CliamsPrincipal

任務34:Cookie-based認證實作

Cliams在這個命名空間下面:

using System.Security.Claims;

建立Claim的List

基于Cliams建立了Identity。ClaimsIdentity的第二個參數一定要給個authenticationType,否則我們的登陸就沒有辦法識别

任務34:Cookie-based認證實作
任務34:Cookie-based認證實作

 在做一個LogOut的Action

任務34:Cookie-based認證實作

修改為傳回為ok,這樣就是api了

任務34:Cookie-based認證實作

dotnet watch run

我們先通路以下admin頁面 ,通路不到

會自動跳轉到:

https://localhost:5001/Account/Login?ReturnUrl=%2Fadmin

任務34:Cookie-based認證實作

我們直接修改連結位址為:

https://localhost:5001/Account/Login

去通路,這樣就實作了登陸了。

然後我們再次通路admin頁面就可以通路到了

任務34:Cookie-based認證實作

為了防止和預設的跳轉的頁面的url相同了。我們把Login修改為MakeLogin

任務34:Cookie-based認證實作

我們先通路:退出

https://localhost:5001/Account/loginout

然後在通路admin

這樣就通路不到了。

我們通路:執行登陸的操作

https://localhost:5001/Account/MakeLogin

會把我們的cookie設定好

任務34:Cookie-based認證實作

再次通路admin的頁面,這樣就能成功通路到了。

https://localhost:5001/Admin

退出的操作

https://localhost:5001/Account/Loginout

任務34:Cookie-based認證實作

修改預設跳轉的頁面位址:

任務34:Cookie-based認證實作

通路:https://localhost:5001/admin

會自動跳轉到:這樣就實作了自動登陸

https://localhost:5001/Account/MakeLogin?ReturnUrl=%2Fadmin

我們再次通路admin就可以成功登陸了。

任務34:Cookie-based認證實作

繼續閱讀