C# 防止在MVC 3 Web应用程序中取消密码更改过程
这是我的问题。我的应用程序有登录页面、密码重置页面和个人资料页面。没有身份验证,密码重置页面和配置文件页面无法访问 我已使用C# 防止在MVC 3 Web应用程序中取消密码更改过程,c#,asp.net-mvc-3,visual-studio-2010,authentication,security,C#,Asp.net Mvc 3,Visual Studio 2010,Authentication,Security,这是我的问题。我的应用程序有登录页面、密码重置页面和个人资料页面。没有身份验证,密码重置页面和配置文件页面无法访问 我已使用[Authorize]执行配置文件操作和密码重置操作 在我的应用程序中,我的用户密码在30天后过期。所以当用户登录并且密码过期时,我会重定向用户以更改密码页面。由于用户已经通过身份验证,用户可以进入配置文件页面键入url(例如:www.mywebsite.com/Profile/View)。这是一个漏洞 我不希望用户取消密码更改过程。我想强制用户更改密码 如何实现这一点?在
[Authorize]
执行配置文件操作和密码重置操作
在我的应用程序中,我的用户密码在30天后过期。所以当用户登录并且密码过期时,我会重定向用户以更改密码页面。由于用户已经通过身份验证,用户可以进入配置文件页面键入url(例如:www.mywebsite.com/Profile/View)。这是一个漏洞
我不希望用户取消密码更改过程。我想强制用户更改密码
如何实现这一点?在user/passowrd表中有另一个布尔标志列,用于指示用户在密码过期后是否重置了密码。因此,每当密码过期时,将该记录的此列值设置为
false
,当用户根据您的过程真正更改密码时,将该值设置为true
。现在,当用户尝试访问视图
操作方法(或任何其他操作方法/控制器)时,可以检查此列值。您可以将此检查作为自定义操作筛选器编写,并根据需要将其应用于操作方法/控制器
您也可以使用PasswordLastUpdated
datetime列来代替上述布尔标志。在这种情况下,您需要检查该值(PasswordLastUpdate)是在过期进程中记录的日期时间之前还是之后。(DateExpired
column value)
创建自定义操作筛选器的示例可用。在用户/passowrd表中有另一个布尔标志列,以指示用户是否在密码过期后重置了密码。因此,每当密码过期时,将该记录的此列值设置为
false
,当用户根据您的过程真正更改密码时,将该值设置为true
。现在,当用户尝试访问视图
操作方法(或任何其他操作方法/控制器)时,可以检查此列值。您可以将此检查作为自定义操作筛选器编写,并根据需要将其应用于操作方法/控制器
您也可以使用PasswordLastUpdated
datetime列来代替上述布尔标志。在这种情况下,您需要检查该值(PasswordLastUpdate)是在过期进程中记录的日期时间之前还是之后。(DateExpired
column value)
创建自定义操作筛选器的示例可用。是的,我已经有了这两列。我可以在每个视图中检查这种情况。但我认为这不是一个好的做法。如何编写自定义操作属性?@yohan.jayarathna:不要在视图中编写此类代码。正如我所提到的,您必须编写一个action属性,并将其应用于您的action方法/控制器(以便所有action方法都进行该检查)是的,我已经有了这两个列。我可以在每个视图中检查这种情况。但我认为这不是一个好的做法。如何编写自定义操作属性?@yohan.jayarathna:不要在视图中编写此类代码。正如我所提到的,您必须编写一个action属性,并将其应用于您的action方法/控制器(以便所有action方法都具有该检查)