【发布时间】:2021-08-09 13:02:49
【问题描述】:
我在 Asp.Net 核心上使用 .Net 5.0 在启动时我已添加;
services.AddIdentity<ApplicationUser, ApplicationRole>(SetupIdentityOptions)
.AddEntityFrameworkStores<ApplicationDbContext>()
.AddDefaultTokenProviders();
services.Configure<DataProtectionTokenProviderOptions>(opt =>
{
opt.TokenLifespan = TimeSpan.FromDays(1);
}
);
我生成如下代码(按照 MS 文档进行编码);
var code = await CommonServices.UserManager.GeneratePasswordResetTokenAsync(user);
code = WebEncoders.Base64UrlEncode(Encoding.UTF8.GetBytes(code));
var callbackUrl = $"{request.RequestData.ReturnUrl}?code={code}";
现在,如果我保存此时生成的代码并在用户单击链接后检查接收到控制器的代码,它们是相同的。但是当我这样做时;
var result = await CS.UserManager.ResetPasswordAsync(user, model.Code, model.Password);
它给了我“无效令牌”但是令牌是相同的。
然后我尝试了这个,仍然说无效令牌;
var isValidToken = await _userManager.VerifyUserTokenAsync(
user,
_userManager.Options.Tokens.PasswordResetTokenProvider,
UserManager<TUser>.ResetPasswordTokenPurpose,
code);
我不确定身份框架是否将生成的令牌保存在 [AspNetUserTokens] 表中。生成令牌后找不到任何已保存的令牌。
可能是什么问题?
【问题讨论】:
标签: asp.net-core .net-5 asp.net-identity-3