删除azure函数中使用的过期或无效的openiddict令牌

问题描述 投票:0回答:1

我正在开发一个天蓝色功能,它是系统的一部分。系统的认证/授权由

OpenIdDict
库控制。在生产中使用我们的系统一段时间后,
OpenIddictTokens
表中有数百万个无效和过期的令牌,我认为这导致我们系统中的一些调用速度减慢。

现在我正在开发一个时间触发的azure函数,其目的是删除(摆脱)分别保存在

OpenIddictTokens
OpenIddictAuthorizations
表中的所有无用令牌和授权。

我开始查看 openiddict 文档和 api,但尚未找到与我在 azure 中实现相关的要求的完全匹配。

有人可以帮忙吗?谢谢。

.net-core azure-functions openiddict
1个回答
2
投票

查看文档并尝试代码后,我找到了该方法以及如何在我的 azure 函数应用程序中使用它。

首先在启动时添加openiddict的依赖:

            builder.Services.AddOpenIddict()
            // Register the OpenIddict core services.
            .AddCore(options =>
            {
                // Register the Entity Framework stores and models.
                options.UseEntityFrameworkCore()
                    .UseDbContext<ApplicationDbContext>();
            });

然后使用

IOpenIddictAuthorizationManager
IOpenIddictTokenManager
作为依赖项创建相应的函数,并为两者调用
PruneAsync
方法。

        private readonly IOpenIddictAuthorizationManager _openIddictAuthorizationManager;
        private readonly IOpenIddictTokenManager _openIddictTokenManager;

        public PruneTokenFunction(IOpenIddictAuthorizationManager openIddictAuthorizationManager, IOpenIddictTokenManager openIddictTokenManager)
        {
            _openIddictAuthorizationManager = openIddictAuthorizationManager;
            _openIddictTokenManager = openIddictTokenManager;
        }

        [FunctionName("prunetoken")]
        public async Task Run([TimerTrigger("0 */5 * * * ")] TimerInfo timerInfo)
        {
            await _openIddictTokenManager.PruneAsync(DateTimeOffset.Now.AddDays(-1));
            await _openIddictAuthorizationManager.PruneAsync(DateTimeOffset.Now.AddDays(-1));
        }

以下是与相同查询相关的问题,这可能对许多人有帮助。 实现过期token自动刷新

© www.soinside.com 2019 - 2024. All rights reserved.