[英]After logout,how to redirect user to login page when he/she will click back button of browser in ASP.NET MVC3
[英]How to redirect a user back to where he was after login in asp.net mvc 3
我正在學習ASP.NET MVC3,我現在正在研究用戶處理。 我的第一個問題是(我知道在其他主題中有很多關於這個主題的內容,我只是找不到一個很好的MVC3),我希望登錄頁面重定向我來自我的地方,或者我被重定向到的地方。 在PHP中,也許我會將這個url添加到查詢字符串中。 但我需要一種方法以某種方式自動執行此操作,這是一種非常常見的設計模式,我想知道是否有“內置”方式來執行此操作。
什么是最干凈,或首選的方式?
此外,當我重定向到登錄頁面時,這將是檢查和存儲我重定向的URL的最佳方式? 我會在請求對象中檢查引用者並將其在URL中吐出“?redirect = protected.html”,但我甚至不確定如何正確執行此操作。
關於這個問題的任何建議將不勝感激。
MVC的工作方式與ASP.NET相同。
如果您使用表單身份驗證,那么很多問題都將為您解答。
在您的Web Config中找到authentication="Windows"
,然后將其更改為Forms
<authentication mode="Forms">
<forms loginUrl="~/Account/LogOn" />
</authentication>
MVC 3實際上會為您提供Account / LogOn路徑作為MVC 3模板項目的一部分(檢查您的模型,看看您是否有一個名為AccountModel
)。
然后,您只需添加Authorization
即可拒絕所有用戶訪問您的網站:
<authorization>
<deny users="?"/>
</authorization>
默認情況下,這會將訪問您網站的任何人發送到您的登錄信息。
因此,在驗證登錄憑據是否正確后,將AuthCookie
設置為與ASP.NET相同:
FormsAuthentication.SetAuthCookie(userName, false);
從此形式,您可以重定向到您想要的任何地方。
重定向回到你來自的地方:
FormsAuthentication.RedirectFromLoginPage(userName, false);
不要忘記另一個有用的陳述:
FormsAuthentication.SignOut();
如果沒有身份驗證,站點將不允許您在任何地方訪問,直到您登錄,因此CSS將停止工作。
我添加的位置以確保不會發生這種情況如下:
<location path="Content">
<system.web>
<authorization>
<allow users="?"/>
</authorization>
</system.web>
</location>
<location path="Scripts">
<system.web>
<authorization>
<allow users="?"/>
</authorization>
</system.web>
</location>
在asp.net中它是一個?returnUrl = ...
(1)確保你有類似的東西
<authentication mode="Forms">
<forms loginUrl="~/Account/LogOn" timeout="2880" />
</authentication>
在你的根web.config中。
(2)在您想要保護的Controller中,在其上方添加[Authorize]
屬性。
請創建新項目並選擇Internet應用程序模板而不是清空項目 ,您將獲得簡單登錄過程的示例以及更改密碼。
注意:請閱讀此內容: http : //www.asp.net/mvc/tutorials/preventing-open-redirection-attacks
該示例在登錄過程中顯示,它確保returnUrl是Url.IsLocalUrl()幫助程序的本地URL,以防止打開重定向攻擊。
更新:最好的方法是在您真正了解標准流程后實現自己的自定義登錄流程 ,而不是使用URL來跟蹤用戶的來源,您可以設置一個新的cookie來存儲帶有httponly cookie的returnUrl並刪除它只是在重定向到上一頁之前。
另一種常見做法是使用角色 。 您可以通過將允許的角色添加為控制器上方的屬性,為特定的名為Role
的用戶組指定目錄/控制器:
[Authorize(Roles = "Admin")]
請參閱此 visual studio 管理工具,以使用內置 Web界面創建示例用戶和角色。
您可能還希望使用站點地圖根據當前用戶角色排列顯示/隱藏菜單的頁面和菜單鏈接。 使用此mvcsitemap在ASP.NET MVC站點地圖中添加安全修整功能。
在某些情況下,恰好有自定義身份驗證而不是基於標准表單(企業級應用程序的常見情況)。
在這種情況下,我建議手動管理查詢字符串中的returnUrl
參數。 登錄頁面讀取此URL並在成功驗證后重定向。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.