簡體   English   中英

如何在asp.net mvc 3登錄后將用戶重定向回到他所在的位置

[英]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

該示例在登錄過程中顯示,它確保ret​​urnUrl是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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM