Cookie based認證實現

2022-10-05 21:33:35 字數 3254 閱讀 5960

引用:

(使用asp.net 4.x 中的時候一定都用過forms認證即formsauthentication做登入使用者的身份認證,formsauthentication的核心就是cookie,asp.net會將使用者名稱儲存在cookie中。但是它很難進行擴充套件,更無法與第三方認證整合,因此,在 asp.net core 中對認證與授權進行了全新的設計,並使用基於宣告的認證(claims-based authentication))

在controllers資料夾下新建admincontroller.cs

設定檢視

@admin page

執行展示:

二、cookie-based認證實踐

1、給admincontroller新增 [authorize] 標籤

提示讓我們引用該空間即可。configureservices方法下新增

提示讓我們引用該空間即可。

然後要在configure方法中把cookie中介軟體也新增進來,否則認證授權是不會生效的

else

還是會顯示使用者沒有登入,並且httpcontext.user.claims讀取不到登入使用者的任何資訊。

//這說明asp.net owin框架中middleware的呼叫順序會對系統功能產生很大的影響,各個middleware的呼叫順序一定不能反

//");

});}

發現已經自動跳轉到登陸位址了。

暫時不做登陸的,只是模擬一下登陸,首先建立乙個accountcontroller.cs

新增兩個api用於登陸和登出

public class accountcontroller : controller

//登陸

public iactionresult makelogin()

;//必須要加cookieauthenticationdefaults.authenticationscheme,不然無法解析

}//登出

在asp.net core中使用cookie認證登入使用者的方法和傳統的formsauthentication不太一樣,大致步驟如下:

所以我們可以看到整個asp.net core的cookie認證登入流程比以前asp.net的formsauthentication還是要複雜許多,畢竟以前乙個formsauthentication.setauthcookie方法就搞定了。

login方法的**如下:

/// /// 該action登入使用者wangdacui到asp.net core

///

public iactionresult login()

; var claimsidentity = new claimsidentity(

claims,

cookieauthenticationdefaults.authenticationscheme);

claimsprincipal user = new claimsprincipal(claimsidentity);

task.run(async () =>

);*/

}).wait();

return view();

}

如果當前http請求本來登入了使用者a,現在呼叫httpcontext.signinasync方法登入使用者b,那麼相當於登出使用者a,登入使用者b

3.讀取登入使用者資訊

那麼使用者登入後怎麼將登入使用者的資訊(比如使用者名稱)讀取出來呢?我們在homecontroller的index方法中演示了如何判斷當前使用者是否已經登入,並且讀出登入使用者的使用者名稱,index方法的**如下所示:

/// /// 該action判斷使用者是否已經登入,如果已經登入,那麼讀取登入使用者的使用者名稱

///

public iactionresult index()

return view();

}

注意,最好還是用httpcontext.user.identity.isauthenticated來判斷使用者是否已經登入

登出使用者

那麼登入使用者後怎麼登出登入呢?我們在homecontroller的logout方法中演示了如何登出登入的使用者,**如下所示:

/// /// 該action從asp.net core中登出登入的使用者

///

public iactionresult logout()

).wait();

return view();

}

果當前http請求本來就沒有登入使用者,那麼呼叫httpcontext.signoutasync方法時也不會報錯

RSA的簽名認證實現

大致 如下 filestream objfile file openread test.txt hashalgorithm md5 hashalgorithm create md5 byte hashdata md5 computehash objfile console writeline con...

Rails Digest認證實現和原理

優勢 http digest是一種http 不僅限於web頁面 認證框架,相比通常使用的基本認證,digest認證的優點是相對安全 基於網路標準和簡單,它不需要編寫登入表單頁面,對登入資訊進行加密,這樣就可以很好的支援較安全的程式自動連線 非瀏覽器連線 可以廣泛的應用到資料服務領域。實現 在rail...

django的使用者認證實現過程

django的使用者認證實現過程 1.在url.py裡增加,r accounts login django.contrib.auth.views.login 這裡,處理url的view,是系統自帶的。django.contrib.auth.views.login的功能有以下2個 a.若為get,它在...