延长.net Core 3.1的令牌寿命

问题描述

如何配置.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以延长/减少令牌寿命的帖子