我们有一个ASP.NET网站,使用IIS中配置的基本身份验证(以及SSL)对用户进行身份验证。用户帐户存储在Active目录中。目前,当用户尝试导航到该站点时,会向他们显示登录提示(由IIS抛出),一旦输入详细信息,如果凭据正确,则允许他们进入。所有这些都由IIS和Active目录自动完成。但是我们有一个新的要求是在x天之后使密码失效,如果用户在密码过期后尝试登录,那么我们需要在用户登录后显示“更改密码”对话框。但我不知道这是怎么回事是可能的,因为一旦密码过期,如果我尝试在此之后登录,则会一次又一次地显示登录提示。在密码过期后,IIS或其他地方是否有任何选项向用户显示“更改密码”对话框(就像它对Windows密码的工作原理一样)?虽然我们可以在密码即将过期时警告用户,并提供在通过自定义页面到期之前更改密码的选项,但是在用户过期后将用户重定向到“更改密码”对话框也是很好的,所以它不需要由客户支持团队手动重置。
答案 0 :(得分:1)
不幸的是,有没有这么简单的方法。
忘记您可以使用基本身份验证执行此操作。这将始终卡住并登录/密码提示。
另一方面,如果您使用ActiveDirectoryMembershipProvider切换到Forms身份验证,则有可能。
您的登录表单可以包含指向允许用户更改其密码的页面的附加链接。此类页面将要求用户提供用户名,旧密码和新密码,并执行ChangePassword方法:
How to programmatically change Active Directory password
很遗憾,广告会员提供商仍然不会告诉您的用户他们的登录/密码组合是错误还是密码刚刚过期。需要自定义提供程序遵循以下方法之一: