我正在做 asp.net,将 FormsAuthentication 与 AdMembership proivder 结合使用。
我不得不手动编写“下次登录时更改密码”屏幕,因为提供程序不支持它。
我打电话:
if (Membership.Provider.ChangePassword(cpCv.LoginName, cpCv.OldPassword, cpCv.NewPassword))
验证用户并更改密码(但不清除“下次登录标志”)
但总是失败, (我假设是因为在设置“下次登录时更改密码标志”时成员身份验证失败。)
验证用户的最简单方法是什么,以便在重置密码和清除“下次登录”标志之前我可以确保“旧密码”和“用户名”匹配?
我已经设置了重置密码和清除标志,但验证让我卡住了。
也试过这段代码,如果重置标志为假,则登录,如果为真,则登录失败。
DirectoryEntry de = new DirectoryEntry( path, "jcsn\\"+AdUserName, AdPassword );
try
{
//Bind to the native AdsObject to force authentication.
object obj = de.NativeObject;
DirectorySearcher search = new DirectorySearcher( de );
search.Filter = "(SAMAccountName=" + AdUserName + ")";
search.PropertiesToLoad.Add( "cn" );
SearchResult result = search.FindOne();
if ( null == result )
{
return false;
}
}
catch ( Exception ex )
{
throw new Exception( "Error authenticating user. " + ex.Message );
}
谢谢,
埃里克-
最佳答案
有一个名为 Membership.Validate 的函数。我认为您的代码如下所示:
if(Membership.ValidateUser(txtUserName.Text, txtPassword.Text))
{
//Proceed with the change
}
我不确定为什么您对 ChangePassword 的调用失败了——我认为 ChangePassword 可能无论如何都会调用 ValidateUser。
关于asp.net - 在下次登录时更改密码以使用成员(member)提供者登录表单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5584951/