我正在使用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);