我的解決方案是基於大衛格倫提出的解決方案,謝謝。
public class CustomAuthorization : AuthorizeAttribute
{
public string Url { get; set; }
// redirect to login page with the original url as parameter.
protected override void HandleUnauthorizedRequest(AuthorizationContext filterContext)
{
filterContext.Result = new RedirectResult(Url + "?returnUrl=" + filterContext.HttpContext.Request.Url.PathAndQuery);
}
}
和屬性添加到您的控制器/行動
[CustomAuthorization(Url="/Area/Login")]
public class HomeController {
//...
}
比filterContext.HttpContext.Response.Redirect(URL)更好地利用filterContext.Result重定向,因爲當前的過濾器將立即重定向到登錄頁面,否則原來的行動將被調用,只有然後重定向到登錄頁面。
好奇心越來越好,謹慎分享您需要這樣做的特定原因? – 2011-05-06 13:07:56
需要將超級管理員登錄/完整界面與其他用戶分開 - 我爲所有角色使用單獨的區域; – effkay 2011-05-13 13:33:52