我正在研究一个天蓝色的功能,它是一个系统的一部分。系统的认证/授权由OpenIdDict库控制。在生产中使用我们的系统一段时间后,OpenIddictTokens表中有数以百万计的无效和过期令牌,我认为这会导致系统中的一些调用减速。
现在,我正在处理一个时间触发的azure函数,该函数的目的是删除(清除)分别保存在OpenIddictTokens表和OpenIddictAuthorizations表中的所有无用令牌和授权。
我开始研究开胸文档和api,但到目前为止还没有找到与实现相关的需求的确切匹配。
有人能帮忙吗?谢谢。
发布于 2022-11-09 10:04:31
在查看了文档并对代码进行了实验之后,我找到了这个方法,以及如何在我的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));
}以下是与同一查询相关的问题,这可能对许多人都有帮助。实现自动过期令牌刷新
https://stackoverflow.com/questions/74316330
复制相似问题