添加自定义令牌配置 CustomEmailConfirmationTokenProviderOptions:

    1. /// <summary>
    2. /// 自定义的令牌配置类
    3. /// </summary>
    4. public class CustomEmailConfirmationTokenProviderOptions : DataProtectionTokenProviderOptions { }

    添加自定义令牌 CustomEmailConfirmationTokenProvider:

    1. /// <summary>
    2. /// 自定义邮件验证令牌提供程序
    3. /// </summary>
    4. /// <typeparam name="TUser"></typeparam>
    5. public class CustomEmailConfirmationTokenProvider<TUser> : DataProtectorTokenProvider<TUser> where TUser : class
    6. {
    7. public CustomEmailConfirmationTokenProvider(IDataProtectionProvider dataProtectionProvider,
    8. IOptions<CustomEmailConfirmationTokenProviderOptions> options) : base(dataProtectionProvider, options)
    9. {
    10. }
    11. }

    在 Startup 中配置自定义令牌的过期时间:

    1. public void ConfigureServices(IServiceCollection services)
    2. {
    3. ...
    4. services.Configure<IdentityOptions>(options =>
    5. {
    6. options.Password.RequiredLength = 6;
    7. options.Password.RequireNonAlphanumeric = false;
    8. options.Password.RequireUppercase = false;
    9. options.SignIn.RequireConfirmedEmail = true;
    10. // 通过自定义的CustomEmailConfirmation名称来覆盖旧有token名称,
    11. // 是它与AddTokenProvider<CustomEmailConfirmationTokenProvider<ApplicationUser>>("ltmEmailConfirmation")
    12. // 关联在一起
    13. options.Tokens.EmailConfirmationTokenProvider = "ItmEmailConfirmation";
    14. });
    15. // Token 有效期修改为 10h
    16. services.Configure<DataProtectionTokenProviderOptions>(
    17. opt => opt.TokenLifespan = TimeSpan.FromHours(10));
    18. // 仅更改电子邮件验证令牌类型的有效时间为 10s
    19. services.Configure<CustomEmailConfirmationTokenProviderOptions>(
    20. opt => opt.TokenLifespan = TimeSpan.FromMilliseconds(10));
    21. ...
    22. // 1.添加 Identity 服务 2.使用 AppDbContext 存储与身份认证相关的数据
    23. services.AddIdentity<ApplicationUser, IdentityRole>()
    24. .AddErrorDescriber<CustomIdentityErrorDescriptor>()
    25. .AddEntityFrameworkStores<AppDbContext>()
    26. .AddDefaultTokenProviders()
    27. .AddTokenProvider<CustomEmailConfirmationTokenProvider<ApplicationUser>>("ItmEmailConfirmation");
    28. ...
    29. }