在谓词为真的情况下,将代码重定向到页面的位置到何处?

时间:2013-12-03 14:45:30

标签: c# asp.net-mvc redirect asp.net-mvc-5

我希望复制ASP提供的类​​似功能,当用户未经过身份验证时,会将其重定向到特定页面(登录页面)。

但是,我希望永久性地将用户发送到控制器上的特定操作,而不是登录页面,直到用户填写表单以在他们进行身份验证时第一次更改密码。

当他们第一次登录时,我正在检查以下内容并相应地重定向到这里:

if (user.HasChangedPassword())
{
    // This user hasn't changed their password to something more secure, send them to the page to change it
    return this.Redirect("Manage");
}

我想从我的登录代码中取出这些代码,并让它在网站范围内进行检查,以便用户只能在我的控制器上执行单个“管理”操作,直到他们设置了安全密码。

请告诉我在哪里可以放置这些代码,以便在我的项目中在整个网站范围内有效?

我唯一能想到的就是在我的每个控制器中检查一下这看起来非常不整洁。

1 个答案:

答案 0 :(得分:3)

创建一个动作过滤器并将其注册为全局过滤器。

ASP.NET MVC Action filters

Example of registering filter globally