是一个asp.net MVC应用程序。 我使用的是Asp.NetCore.Identity
我想在登录后如果“密码从未被更改过”(我知道如何调整此条件)将其重定向到ChangePassword页面并阻止任何其他页面,直到更改密码。(或者当他想访问其他页面以重定向时)在ChangePassword上)
有什么想法吗? 也许要覆盖授权属性?
答案 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();
}