2009-11-20 78 views
3

我把設置身份驗證屬性:重命名RETURNURL在asp.net mvc的字面

filterContext.Result = new HttpUnauthorizedResult(); 

所以當我嘗試訪問

http://www.mysite.com/Forum/Polls 

,我不驗證我重定向到:

http://www.mysite.com/Account/Log?ReturnUrl=%2FForum%2FPolls 

我想擁有以下行代碼:

http://www.mysite.com/Account/Log?back=%2FForum%2FPolls 

,所以不是'ReturnUrl'需要'返回'。我可以在哪裏取得這種行爲。謝謝。

+0

如果任何人在搜索中發現這種情況,我只是提交了一個請求,在未來的.NET版本中修復此問題。如果你也希望MS注意到,那就投票表決,傳遞它等等。http://visualstudio.uservoice.com/forums/121579-visual-studio/suggestions/3049874-make-returnurl-a-configurable-鍵名稱代替鄰 – 2012-08-03 19:21:31

回答

0

它看起來不像你可以。來自System.Web.Security.FormsAuthentication.GetLoginPage() 如果你看看代碼,你會發現它確實是一個硬編碼文字。至少在System.Web版本2.0.0.0中

2

您可以在EndRequest事件上重寫「ReturnURL」。

這是示例代碼。

protected void Application_EndRequest() 
{ 
    if (Response.StatusCode != 301 && Response.StatusCode != 302) return; 

    var targetUrl = Response.RedirectLocation.Replace("ReturnUrl","back"); 
    Response.RedirectLocation = targetUrl; 
} 

希望這段代碼。