【问题标题】:Details of ResetPasswordAsync method of UserManagerUserManager 的 ResetPasswordAsync 方法的详细信息
【发布时间】:2021-04-07 15:07:03
【问题描述】:

我想从内部了解.net的ResetPasswordAsync()方法是如何工作的,我尝试了很多但找不到任何关于它的文章,请帮助。

【问题讨论】:

    标签: asp.net asp.net-mvc-4 reset-password


    【解决方案1】:

    下面是 ResetPasswordAsync() 的代码

    public virtual async Task<IdentityResult> ResetPasswordAsync(TUser user, string token, string newPassword)
        {
            ThrowIfDisposed();
            if (user == null)
            {
                throw new ArgumentNullException(nameof(user));
            }
    
            // Make sure the token is valid and the stamp matches
            if (!await VerifyUserTokenAsync(user, Options.Tokens.PasswordResetTokenProvider, ResetPasswordTokenPurpose, token))
            {
                return IdentityResult.Failed(ErrorDescriber.InvalidToken());
            }
            var result = await UpdatePasswordHash(user, newPassword, validatePassword: true);
            if (!result.Succeeded)
            {
                return result;
            }
            return await UpdateUserAsync(user);
        }
    

    如果用户点击了忘记密码,那么您需要检查用户是否存在,然后生成一个令牌密钥用于密码重置,如下所示

    var callbackUrl = Url.Action("ResetPassword", "Account", 
    new { UserId = user.Id, code = code }, protocol: Request.Url.Scheme);
        await UserManager.SendEmailAsync(user.Id, "Reset Password", 
    "Please reset your password by clicking here: <a href=\"" + callbackUrl + "\">link</a>");    
    

    然后发送如上所示的恢复邮件或发送到您自己的视图进行恢复。

    代码取自 Microsoft GitHub 帐户

    【讨论】:

    • 好的...所以 ....这意味着我真正要寻找的是 UpdatePasswordHash(user, newPassword, validatePassword: true) 和 UpdateUserAsync(user) 方法的详细信息
    猜你喜欢
    • 1970-01-01
    • 2014-01-08
    • 2016-09-07
    • 2021-04-26
    • 1970-01-01
    • 2018-03-02
    • 2014-07-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多