我们正在使用ASP.NET MVC和AdMembership提供程序进行登录,并且由于各种原因必须实现我们自己的“下次登录时更改密码”功能。
我们还要求每24小时不允许更改一次。所以它在AD中以这种方式设置。
我们需要的是在将密码重置为默认值时忽略一个要求,我们希望学生在下次登录时被迫更改密码,即使是在24小时之前。
这是我的捅。基本上我想在重置密码后将PwdLastSet属性更改为超过24小时的值。
if ( bSetToDefault )
{
var adDate = userToActOn.ADEntry.Properties[ "PwdLastSet" ][ 0 ];
DateTime passwordLastSet = DateTime.FromFileTime( ( Int64 ) adDate );
passwordLastSet = System.DateTime.Now.AddHours( -25 );
long filetime = passwordLastSet.ToFileTimeUtc();
userToActOn.ADEntry.Properties[ "PwdLastSet" ][ 0 ] = filetime;
}
但即使我知道用户密码已被更改,我也会一直无效。
任何人都有任何提示或建议?我在寻找错误的财产吗?
答案 0 :(得分:1)
嗯这个属性被复制,所以应该始终可用。 尝试使用命令行脚本查看它是否显示:
http://www.rlmueller.net/PwdLastChanged.htm
它可能因为它的64位日期并没有进行转换?尝试脚本,看看它是否有效。如果是,请查看其中的Integer8Date过程以进行日期转换。
答案 1 :(得分:0)
如果您使用System.DirectoryServices.AccountManagement,则会有一个公开的方法让User Principal立即使密码到期。因此,就像使用oUserPrincipal.ExpirePasswordNow();
这样称呼它一样容易,请参阅this article。