如何手動讓HttpRequestBase.IsAuthenticated 和 HttpContext.User.Identity.IsAuthenticated 為true.


今天為了重寫權限驗證這塊需要重寫AuthorizeAttribute 這個屬性,看了官方文檔:HttpContextBase.User.Identity.IsAuthenticated 這個必須是true才能跑的通,我又去查如何讓這個為true,后來進入了誤區,准備重寫IIdentity 和IPrincipal接口,但是很蛋疼的是需要重寫: Application_PostAuthenticateRequest(在Global.asax),並且這種方式只是替換,還是需要驗證HttpContextBase.User.Identity.IsAuthenticated是否為True, 而我概念里面其實很簡單,肯定有一個接口或者一個管道設置一下就好,並不用去做什么配置,沒那么麻煩,后來我又去研究了WebSecurity.Login 這個方法,這個其實蠻好玩的,不過需要重新設置這個: WebSecurity. InitializeDatabaseConnection(string connectionStringName, string userTableName, string userIdColumn, string userNameColumn, bool autoCreateTables);

connectionStringName在wei.config里面能找到,就是那個defaultConnection.后面的自己配置。

ok, 這個其實是一種解決方案,把你的數據庫連接進來,然后就可以玩了,我個人也比較推薦這個,因為可以玩它自帶很多功能。

 

但是對於需要自己去包裝業務的來說,想讓HttpRequestBase.IsAuthenticated 和 HttpContext.User.Identity.IsAuthenticated 為true,還有一個辦法:

 System.Web.Security.FormsAuthentication.RedirectFromLoginPage(model.UserName, true); 這樣就好了,在判斷用戶登錄是否成功以后調用這個,

效果和上面的是一樣,所以無論你是Form提交還是Ajax提交,這個都好使。

 

我也剛剛開始研究ASP.NET MVC,然后很喜歡里面的繞來繞去,我相信,弄懂這里的東西,還是很好玩的。如果大家有什么更好的辦法,請告訴我,謝謝。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM