项目
版本

OpenIddict Quartz.NET 集成

基本配置

要配置 OpenIddict 使用 Quartz.NET 执行自动清理任务,您需要:

  • 引用 OpenIddict.Quartz 包:

    <PackageReference Include="OpenIddict.Quartz" Version="5.6.0" />
    
  • 注册 Quartz.NET 服务并配置其使用依赖注入和内存存储:

    services.AddQuartz(options =>
    {
        options.UseMicrosoftDependencyInjectionJobFactory();
        options.UseSimpleTypeLoader();
        options.UseInMemoryStore();
    });
    

    获取更多信息,请阅读 Microsoft DI 集成

  • 注册 Quartz.NET 托管服务并配置其在所有作业完成前阻止关闭:

    services.AddQuartzHostedService(options => options.WaitForJobsToComplete = true);
    

    获取更多信息,请阅读 托管服务集成

  • 配置 OpenIddict 使用 Quartz.NET 集成:

    services.AddOpenIddict()
        .AddCore(options =>
        {
            options.UseQuartz();
        });
    

高级配置

禁用修剪

Quartz.NET 集成的默认清理任务会自动删除孤立的令牌和授权。此行为可以通过禁用任何(或两者)修剪作业来自定义:

services.AddOpenIddict()
    .AddCore(options =>
    {
        options.UseQuartz()
            .DisableAuthorizationPruning()
            .DisableTokenPruning();
    });

修剪生命周期

所有令牌/授权如果超过 14 天,都将在修剪作业期间被移除。此生命周期可以独立地为令牌和授权更改:

services.AddOpenIddict()
    .AddCore(options =>
    {
        options.UseQuartz()
            .SetMinimumAuthorizationLifespan(TimeSpan.FromDays(7))
            .SetMinimumTokenLifespan(TimeSpan.FromHours(12));
    });
修剪的最小生命周期是 10 分钟

重试失败的作业

默认情况下,任何失败的 Quartz.NET 作业都将重试两次。此重试次数可以通过以下设置进行配置:

services.AddOpenIddict()
    .AddCore(options =>
    {
        options.UseQuartz()
            .SetMaximumRefireCount(3);
    });
在本文档中