问题描述
如何配置.NET Core 3.1中生成的令牌的TokenLifespan
?我正在使用以下代码,但是它无法正常工作,并且仍在使用默认值1天的TokenLifespan
。
public void ConfigureServices(IServiceCollection services){
//...
services.Configure<DataProtectionTokenProviderOptions>(options =>
{
options.TokenLifespan = TimeSpan.FromDays(5);
});
//...
}
当有一个内置选项可以通过上面给出的代码对其进行更改时,我对通过自定义类进行配置不感兴趣,但是我不知道我做错了什么,它覆盖了我定义的TokenLifeSpan
值。 / p>
解决方法
document显示了如何更改电子邮件令牌的寿命,您需要添加自定义的DataProtectorTokenProvider<TUser>
和DataProtectionTokenProviderOptions
。
与github问题相同:
https://github.com/dotnet/AspNetCore.Docs/issues/5436#issuecomment-373965907
,如果您使用的是基于TotpSecurityStampBasedTokenProvider的提供程序,即EmailTokenProvider或PhoneNumberTokenProvider,那么我认为这是不可能的。
Totp提供程序生成6位数字代码,并且寿命为3分钟,相差90秒。
如果需要更长的时间,您可能必须找到一种创建自己的OTP的方法。
编辑
在this上有关于如何覆盖Rfc6238AuthenticationService以延长/减少令牌寿命的帖子