重定向用户并在ChangePassword页面上“阻止”他

时间:2018-06-08 19:20:05

标签: c# asp.net asp.net-mvc-5 asp.net-core-identity

是一个asp.net MVC应用程序。 我使用的是Asp.NetCore.Identity

我想在登录后如果“密码从未被更改过”(我知道如何调整此条件)将其重定向到ChangePassword页面并阻止任何其他页面,直到更改密码。(或者当他想访问其他页面以重定向时)在ChangePassword上)

有什么想法吗? 也许要覆盖授权属性?

1 个答案:

答案 0 :(得分:0)

我通过创建自定义Authorization类做了同样的事情。为此,我们必须创建一个新类并在其上继承AuthorizeAttribute类,然后覆盖名为AuthorizeCore的方法,因为它是自定义授权检查的入口点。

public class CheckAuthorization: AuthorizeAttribute
{
    public CheckAuthorization(){
    }

    protected override bool AuthorizeCore(HttpContextBase httpContext)
    {
        bool _isAuthorize = false;

        if(password change required)
            httpContext.Response.Redirect("~/home/changepassword");

        if (!httpContext.User.Identity.IsAuthenticated)
            return false;

         // Check roles 

         return true;
    }
}

然后使用您的授权属性

[CheckAuthorization(Roles = "admin, superadmin, root")]
public ActionResult DashBoard()
{
    return View();
}