Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
向ASP.NET MVC身份验证添加额外步骤_Asp.net_Asp.net Mvc_Asp.net Mvc 4_Asp.net Mvc 5 - Fatal编程技术网

向ASP.NET MVC身份验证添加额外步骤

向ASP.NET MVC身份验证添加额外步骤,asp.net,asp.net-mvc,asp.net-mvc-4,asp.net-mvc-5,Asp.net,Asp.net Mvc,Asp.net Mvc 4,Asp.net Mvc 5,我有一个使用标准表单身份验证运行的MVC5网站 但是,我需要为用户的登录过程添加一个额外的步骤。一旦用户通过身份验证,我们将查看他们是否可以访问多个办公室。如果他们需要,我们需要向他们展示一份办公室列表,他们必须选择一个 这是一个强制性步骤,在他们完成此操作之前,不能将其视为已登录 我们需要创建自己的身份验证还是应该向BaseController添加检查?您可以扩展内置身份验证的实现: public class OfficeSelectionAuthorizeAttribute : Author

我有一个使用标准表单身份验证运行的MVC5网站

但是,我需要为用户的登录过程添加一个额外的步骤。一旦用户通过身份验证,我们将查看他们是否可以访问多个办公室。如果他们需要,我们需要向他们展示一份办公室列表,他们必须选择一个

这是一个强制性步骤,在他们完成此操作之前,不能将其视为已登录


我们需要创建自己的身份验证还是应该向BaseController添加检查?

您可以扩展内置身份验证的实现:

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
}

从这里开始,我现在需要了解如何在登录用户的身份中隐藏所选的办公室。我在这里问了一个问题。有什么想法吗?