asp.net - 在下次登录时更改密码以使用成员(member)提供者登录表单

标签 asp.net active-directory forms-authentication change-password

我正在做 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/

相关文章:

c# - Azure Active Directory 跟踪作者和编辑者字段

c# - 如何使用 System.DirectoryServices.AccountManagement 命名空间获取 Active Directory 用户属性?

asp.net - 用户无需在本地主机上提供密码即可登录

asp.net - ASP.NET 新手 : Webforms vs MVC2

asp.net - elmah导致应用程序崩溃

c# - 从 MVC3 和 Razor 中的单个操作返回多个 View

list - 使用列表作为变量的 Powershell 命令

node.js - Electron + Vue + msal-nodejs + Azure 广告 : redirect URL issue

c# - 如何将 OpenID 结合 Forms 身份验证添加到 MVC

asp.net - 表单例份验证不应该超时?