我有一个使用标准表单身份验证运行的MVC 5网站。
但是我需要在用户的登录过程中添加额外的步骤。用户通过身份验证后,我们会查看他们是否可以访问多个办事处。如果他们这样做,我们需要向他们展示办事处清单,他们必须选择一个。
这是必须执行的步骤,在执行此操作之前不能将其视为已登录。
我们是否需要创建自己的身份验证,还是应该向BaseController添加检查?
答案 0 :(得分:2)
您可以扩展内置身份验证的实现:
public class OfficeSelectionAuthorizeAttribute : AuthorizeAttribute
{
protected override bool AuthorizeCore(HttpContextBase httpContext)
{
var result = base.AuthorizeCore(httpContext);
if (result)
{
if (IsOfficeSelected())
{
return true;
}
httpContext.Response.RedirectToRoute("OfficeSelection Route");
httpContext.Response.Flush();
}
return false;
}
private bool IsOfficeSelected()
{
//office selection check
}
}
然后您需要使用此过滤器而不是默认过滤器:
[OfficeSelectionAuthorize]
public class AccountController : Controller
{
//action methods
}