2011-06-07 96 views
1

使用ASP.Net Forms和ASP.Net MVC 3(结合 - 我们正在将Web Forms更改为MVC),我有一个人员验证(用户名/密码)的场景,但由于其帐户中存在特定条件,因此在继续操作之前需要更改密码。要求经过身份验证的用户更改密码

由于用户已经通过身份验证,是否有一个全球位置,我可以阻止任何访问需要身份验证的网站部分,直到他们输入新密码?我知道可能需要2个位置(一个用于Web窗体,另一个用于MVC)。

回答

2

在Application_AuthenticateRequest中检查特定条件。如果不符合(即他们必须改变密码),重定向到正确的页面。这应该适用于MVC和WebForms。

+0

只是在global.asax中使用这种方法吗? – Jared 2012-08-05 05:24:51

+0

是的,你明白了 – 2012-08-05 21:54:29

0

您可以使用用户类中的标志来确定在验证用户角色之前是否需要更改密码的自定义RoleProvider。

+0

假设我检查我的应用程序中的角色(我没有) - 我如何处理这个页面/操作,不强制任何角色,只是用户是Authenticated? – 2011-06-07 20:11:30

0

我把它作为用户模型中的一个属性(即public bool ChangedPassword {get; set;})。当用户创建时,这将被设置为False,并且当用户更改密码时设置为True。在任何受保护的操作之前,请检查ChangedPassword == True。

+0

有几个地方我可以放*标志*(饼干,会话等) - 问题是关于在哪里放置国旗的支票? – 2011-06-07 20:09:25

+0

我不知道自定义RoleProviders,所以如果它将用于许多控制器中,可以将它放入局部视图或_layout中。 – noinstance 2011-06-07 20:13:08

相关问题