Asp.net-Mvc
asp.net mvc 中 HttpUnauthorizedResult 上的預設登錄 url
我
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”?
螢幕截圖顯示了我想說的清晰視圖..
雖然我設置了’/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(); }
