ResetPasswordTokenProvider

ResetPasswordTokenProvider

我正在使用Asp.Net Identity生成密码重置 token 。

string Token = userManager.GeneratePasswordResetToken(userId);

上面的代码给了我一个长度很大的 token 。
是否可以生成短长度的密码重置 token ?

最佳答案

您可以使用TotpSecurityStampBasedTokenProvider生成6位数字:

public class ResetPasswordTokenProvider : TotpSecurityStampBasedTokenProvider<OriIdentityUser>
{
    public const string ProviderKey = "ResetPassword";

    public override Task<bool> CanGenerateTwoFactorTokenAsync(UserManager<OriIdentityUser> manager, OriIdentityUser user)
    {
        return Task.FromResult(false);
    }
}

并在启动类中添加:

services.AddIdentity<IdentityUser, IdentityRole>(options =>
    {
        options.Tokens.PasswordResetTokenProvider = ResetPasswordTokenProvider.ProviderKey;
    })
    .AddDefaultTokenProviders()
    .AddTokenProvider<ResetPasswordTokenProvider>(ResetPasswordTokenProvider.ProviderKey);

10-07 23:44