在.Net MVC4中,当用户的密码被重置时,我使用子类AuthorizeAttribute将所有请求重定向到“更改密码”页面,如下所示:
public override void OnAuthorization(AuthorizationContext filterContext)
{
// Call base class method first
base.OnAuthorization(filterContext);
// Only redirect if password change is required and the requested action
// is not "Change Password"
if (!passwordChangeRequired
&& !(filterContext.Controller is ApplicantController &&
MVC.Applicant.ActionNames.ChangePassword.Equals(filterContext.ActionDescriptor.ActionName)))
{
filterContext.Result = new RedirectToRouteResult(
new RouteValueDictionary
{
{ "controller", MVC.Applicant.Name },
{ "action", MVC.Applicant.ActionNames.ChangePassword }
});
}
}
刚刚编写了这段代码,它似乎可以工作,但还没有信心,想知道它是否可以简化。
特别是关于控制器和动作 - 项目使用T4MVC,所以两者都需要单独包含在检查和重定向中,还是可以以某种方式组合?
也应该base.OnAuthorization
在开始或结束(或两者都不)进行呼叫?
感谢任何指针...