Identityserver4 使代码中的引用令牌无效(不是对吊销端点的http调用)

Identityserver4 使代码中的引用令牌无效(不是对吊销端点的http调用),identityserver4,Identityserver4,我将引用令牌持久化到db,我的用户可以更改或获取生成的密码。但是,例如,如果一个用户忘记了他们的密码,并获得了一个新生成的密码,那么我想使该主题的所有当前令牌无效/删除。通过efcore直接与db交互是一个好主意/可以接受吗?或者除了/connect/revocation端点之外,是否还有用于此目的的api?与数据库交互没有问题,但使用现有服务来实现这一点 在IdentityService中,您可以在IdentityServer4.stores命名空间中找到存储 using IdentitySe

我将引用令牌持久化到db,我的用户可以更改或获取生成的密码。但是,例如,如果一个用户忘记了他们的密码,并获得了一个新生成的密码,那么我想使该主题的所有当前令牌无效/删除。通过efcore直接与db交互是一个好主意/可以接受吗?或者除了
/connect/revocation
端点之外,是否还有用于此目的的api?

与数据库交互没有问题,但使用现有服务来实现这一点

在IdentityService中,您可以在
IdentityServer4.stores
命名空间中找到存储

using IdentityServer4.Stores;
将存储注入控制器:

private readonly IReferenceTokenStore _referenceTokenStore;

public class MyController : Controller
{
    public MyController(IReferenceTokenStore referenceTokenStore)
    {
        _referenceTokenStore = referenceTokenStore;
    }
}
并调用它以删除此用户/客户端组合的引用令牌:

await _referenceTokenStore.RemoveReferenceTokensAsync(subjectId, clientId);
这将有效地从数据库中删除记录。您不应该创建自己的数据库模型并直接删除令牌

由于IdentityServer是开源的,所以您可以使用用于令牌吊销的