8

我寫這在asp.net MVC3應用以下條件的自定義AuthorizeAttribute默認登錄網址

public override void OnAuthorization(AuthorizationContext filterContext) 
{  
    //auth failed, redirect to Sign In 
    if (!filterContext.HttpContext.User.Identity.IsAuthenticated) 
    { 
     filterContext.Result = new HttpUnauthorizedResult(); 
    } 
} 

而且在我的web.config,我有:

<authentication mode="Forms"> 
    <forms loginUrl="~/User/SignIn" timeout="2880" /> 
</authentication> 

驗證失敗後,默認情況下,它會重定向到「/帳戶/登錄」頁面。

如何更改此默認重定向網址並將其重定向到「/用戶/登錄」?

的截圖顯示的就是我想說的清晰視野.. HttpUnauthorizedresult image

雖然我已經設置「/用戶/簽到」,它重定向到「/帳號/登錄」

+0

? – 2011-05-17 13:18:47

+0

是的。我正在使用MVC3。 – Prasad 2011-05-17 13:29:55

+3

經過一番努力,我獲得瞭解決方案。我最近添加了WebMatrix.WebData參考,這似乎是這個問題的真正罪魁禍首。這可以通過將密鑰添加到您的配置文件來處理: Prasad 2011-05-20 08:57:33

回答

9

我不知道我是否可以將其添加爲一個答案。但這可能有助於其他人有這個相關的問題。

我在掙扎之後得到了解決方案。我最近添加了WebMatrix.WebData參考,這似乎是這個問題的真正罪魁禍首。這可以通過將關鍵看你的配置文件進行處理:

<add key="loginUrl" value="~/User/SignIn" /> 
+6

該鍵應該添加到web.config中的appSettings部分。 – 2011-07-21 23:33:33

+0

我認爲我們通常會在appSettings部分添加如上所示的鍵:) – Prasad 2011-07-22 04:58:56

+0

@Prasad我已經花了幾個小時的時間了...感謝一羣朋友在這裏回覆並保存了我的餘生! – spender 2012-07-03 13:14:02

2

你應該修改loginUrl的根目錄。

我已經創建了AuthorizationAttribute ...它正在重定向

<authentication mode="Forms"> 
    <forms loginUrl="~/Authenticate/SignIn" timeout="2880"/> 
</authentication> 

和我的屬性是:

public class AuthorizationAttribute : AuthorizeAttribute 
{ 
    public override void OnAuthorization(AuthorizationContext filterContext) 
    { 
     base.OnAuthorization(filterContext); 

     if (!filterContext.HttpContext.User.Identity.IsAuthenticated) 
     { 
      filterContext.Result = new HttpUnauthorizedResult(); 
     } 
    } 
} 

和應用屬性控制器需要的任何方法...

[AuthorizationAttribute()] 
public ActionResult Index() 
{ 
    return View(); 
} 
+0

我已經在根配置中更改了它。但它被重定向到/ Acccount/Login頁面並拋出404頁面,因爲我沒有這樣的控制器。 – Prasad 2011-05-17 13:41:09

+0

這很奇怪,因爲我剛剛在這個時候對POC進行了驗證,並且它按照預期的方式工作,重定向到web.conf(根目錄)中指定的操作... – 2011-05-17 13:46:40

+0

您可以發佈客戶授權屬性代碼來交叉檢查我是否缺少什麼? – Prasad 2011-05-17 13:49:38