1

我在我的网络应用程序中使用 ActiveDirectoryMembershipProvider。我像这样使用域凭据对用户进行身份验证

if (Membership.ValidateUser(m.Username, m.Password))
    FormsAuthentication.SetAuthCookie(m.Username, true);

这很好用。

但是即使在活动目录中更改了用户的密码,用户仍然保持登录到网络应用程序?

如果他们的域密码更改或他们的帐户被禁用等,我如何确保用户不会保持登录到 Web 应用程序?

4

2 回答 2

1

答案是定期(每 30 分钟左右)检查 User.IsApproved 和 User.LastPasswordChangedDate 以确保用户凭据仍然有效。

为此,您需要手动创建 FormsAuthenticationTicket 和 cookie,而不是使用 FormsAuthentication.SetAuthCookie。

将验证用户的日期放在 UserData 中,并将其与 LastPasswordChangedDate 进行比较。

我已经实现了这一点,并且效果很好。

更多信息在这里

检查 Active Directory 密码是否与 cookie 不同

于 2013-01-03T01:00:51.050 回答
0

我不是 100% 确定,但听起来你不高兴用户的身份验证票继续工作,即使他们的密码更改/帐户过期。

用户登录并拥有身份验证票 (cookie) 后,直到票证过期(在 web.config 文件中设置),用户才会再次接受身份验证。以下是处理此问题的 2 条建议:

  1. 等待身份验证票 (cookie) 过期。下次登录时,用户将被要求使用他们的新密码。此解决方案的变体包括使用仅会话 cookie,以便用户必须在浏览器关闭时始终登录(推荐用于 AD 身份验证)。
  2. 编写一个 Http 模块,用于查找最近更新的用户列表并在 HTTP 管道的早期检查身份验证票。如果身份验证票通过并匹配更新的用户列表,您将过期用户的 cookie 并将他们重定向到登录页面。这是一个类似的问题,可以帮助您入门:

    如何强制注销网站上的所有用户

于 2012-12-07T02:34:22.873 回答