c# - 如何减少 Asp.Net Identity 中的密码重置 token 长度?

标签 c# asp.net asp.net-mvc-4 asp.net-identity

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

关于c# - 如何减少 Asp.Net Identity 中的密码重置 token 长度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31108044/

相关文章:

c# - 是否有从 JSON Web 服务返回错误状态的传统方法?

c# - ASP.NET MVC WebAPI 从异步任务创建 ViewModel

asp.net-mvc-4 - ScriptBundle 依赖项

c# - 有条件地在 html.RadioButtonFor (MVC4/Razor) 中包含 checked 属性

asp.net-mvc-4 - 将查询字符串传递给RedirectToRouteResult(在 Controller 和操作旁边)

c# - 使用左列标题创建动态表的最佳方法

c# - 什么对解析 : regular expressions or linq? 更好

asp.net - validateRequest ="false"不起作用,即使使用 requestValidationMode ="2.0"

C# 本地共享的文件/目录权限

c# - 媒体捕捉 : Photos have odd color letterboxing on Windows Phone