我需要创建一个用于身份验证的电子邮件令牌。使用默认功能不是一种选择,因为电子邮件令牌过期得相当快。
使用以下代码,我设法延长了令牌生命周期,但这会生成一个非常长且复杂的令牌。是否可以生成具有延长生命周期的六位数令牌?
var dataProtector = dataProtectionProvider.DataProtectionProvider.Create("My Asp.Net Identity");
userManager.UserTokenProvider = new DataProtectorTokenProvider<ApplicationUser, string>(dataProtector)
{
TokenLifespan = TimeSpan.FromHours(24)
};
源:电子邮件令牌在 15 分钟后过期 - ASP 标识 2.0 API
亲切问候
布莱希特
解决了!只需实现IUserTokenProvider
,您就可以编写自己的逻辑!
public class CustomUserTokenProvider : IUserTokenProvider<ApplicationUser, string>
{
public Task<string> GenerateAsync(string purpose, UserManager<ApplicationUser, string> manager,
ApplicationUser user)
{
return
//logic to generate code
}
public Task<bool> IsValidProviderForUserAsync(UserManager<ApplicationUser, string> manager, ApplicationUser user)
{
throw new NotImplementedException();
}
public Task NotifyAsync(string token, UserManager<ApplicationUser, string> manager, ApplicationUser user)
{
throw new NotImplementedException();
}
public Task<bool> ValidateAsync(string purpose, string token, UserManager<ApplicationUser, string> manager,
ApplicationUser user)
{
//logic to validate code
}
}