我有一个MVC 2应用程序,每一个页面需要的(除了当前为/帐号/登录)授权,但我更希望,而不是将其转发给“/ Account/LogOn?ReturnUrl =/SomePage”来验证用户,它只是显示登录表单而不是用户请求的页面,所以URL不会改变返回登录视图,而不是在MVC 2应用重定向(网站宽)
我已经有一个BaseController几乎每一个其他控制器继承,我使用的地方,我已经把我的AuthorizeAttribute其他用途(改变了简洁):
[Authorize(Roles = "Role1, Role2")]
public class BaseController : Controller
{
}
我对一个漂亮的解决方案最初的想法是覆盖AuthorizeAttribute类的方式,将是这个样子:
public class AuthorizeWithLoginAttribute : AuthorizeAttribute
{
protected override void HandleUnauthorizedRequest(AuthorizationContext filterContext)
{
//This doesn't work obviously
filterContext.Result = View("Logon");
}
}
然后,我可以简单地我上面的控制器更改为:
[AuthorizeWithLogin(Roles = "Role1, Role2")]
public class BaseController : Controller
{
}
是有一种方法可以真正做到这一点? (这是我的第一篇文章仅供参考)
你的意思是说,而不是重定向到'/帐号/ LogOn支持?RETURNURL =/SomePage'你希望它被重定向到'/帐号/ Logon'仅供autentication? – 2010-07-12 00:36:40
我想完全避免重定向。所以,如果我访问www.mysite.com,我需要进行身份验证,那么它只会告诉我一个登录表单就在那里,不重定向我/帐号/登录在所有...基本上告诉我的登录视图,而不是索引视图(问题作为登录的看法是不同的控制器上) – 2010-07-12 00:39:25