Asp.net-Mvc

asp.net mvc 中 HttpUnauthorizedResult 上的預設登錄 url

  • May 30, 2013

AuthorizeAttribute在 asp.net mvc3 應用程序中編寫了一個具有以下條件的自定義:

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>

驗證失敗時,預設重定向到“/Account/Login”頁面。

如何更改此預設重定向 URL 並將其重定向到“/User/SignIn”?

螢幕截圖顯示了我想說的清晰視圖..HttpUnauthorized結果圖片

雖然我設置了’/User/SignIn’,但它重定向到’/Account/Login'

我不確定我是否可以將其添加為答案。但這可能會幫助遇到此相關問題的其他人。

經過一番鬥爭,我得到了解決方案。我最近添加了 WebMatrix.WebData 參考,這似乎是這個問題的真正罪魁禍首。這可以通過將密鑰添加到配置文件來處理:

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

您應該修改 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();
}

引用自:https://stackoverflow.com/questions/6015464