1

这是我的问题。我的应用程序有登录页面、密码重置页面和个人资料页面。密码重置页面和个人资料页面未经身份验证无法访问。

我已[Authorize]用于配置文件操作和密码重置操作。

在我的应用程序中,我的用户密码在 30 天后过期。因此,当用户登录并且密码过期时,我会重定向用户以更改密码页面。由于用户已经通过身份验证,用户可以进入个人资料页面,输入网址(例如:www.mywebsite.com/Profile/View)。这是一个漏洞。

我不希望用户取消密码更改过程。我想强制用户更改密码。

我怎样才能做到这一点?

4

1 回答 1

1

在您的用户/密码表中有另一个布尔标志列,以指示用户是否在密码过期后重置了他的密码。因此,每次当您使密码过期时,将该记录的该列值设置为false,当用户真正根据您的流程更改其密码时,将该值设置为true。现在,当用户尝试访问View操作方法(或任何其他操作方法/控制器)时,您可以检查此列值。您可以将此检查编写为自定义操作过滤器,并根据需要将其应用于操作方法/控制器。

您也可以使用PasswordLastUpdateddatetime 列代替上面提到的布尔标志。在这种情况下,您需要检查该值(PasswordLastUpdated)是在针对过期过程记录的日期时间之前还是之后。(DateExpired列值)

此处提供了创建自定义操作过滤器的示例。

于 2013-02-10T11:34:23.763 回答