我正在开发一个天蓝色功能,它是系统的一部分。系统的认证/授权由
OpenIdDict
库控制。在生产中使用我们的系统一段时间后,OpenIddictTokens
表中有数百万个无效和过期的令牌,我认为这导致我们系统中的一些调用速度减慢。
现在我正在开发一个时间触发的azure函数,其目的是删除(摆脱)分别保存在
OpenIddictTokens
和OpenIddictAuthorizations
表中的所有无用令牌和授权。
我开始查看 openiddict 文档和 api,但尚未找到与我在 azure 中实现相关的要求的完全匹配。
有人可以帮忙吗?谢谢。
查看文档并尝试代码后,我找到了该方法以及如何在我的 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自动刷新