Identityserver4 使用identity server4并发登录

Identityserver4 使用identity server4并发登录,identityserver4,Identityserver4,当用户登录到其他浏览器时,希望从所有其他会话注销。 我可以删除PersistedGrants,但cookies仍然存在。 当用户刷新页面时,由于刷新令牌,将生成一个新的访问令牌。 所以基本上我们只需要一个并发的用户会话 任何帮助都将不胜感激 默认情况下,IdSrv在cookie中持久化用户会话。您可以通过实现IUserSession并在DI中注册来改变这一点。这样,您就可以在一个会话内访问登录的客户端。有了这些知识,您可以使用以下检查注册自定义中间件:当进行身份验证时,即具有身份验证cookie

当用户登录到其他浏览器时,希望从所有其他会话注销。 我可以删除PersistedGrants,但cookies仍然存在。 当用户刷新页面时,由于刷新令牌,将生成一个新的访问令牌。 所以基本上我们只需要一个并发的用户会话


任何帮助都将不胜感激

默认情况下,IdSrv在cookie中持久化用户会话。您可以通过实现IUserSession并在DI中注册来改变这一点。这样,您就可以在一个会话内访问登录的客户端。有了这些知识,您可以使用以下检查注册自定义中间件:当进行身份验证时,即具有身份验证cookie,以及相同用户id的其他会话,然后确定,否则处理冲突:较早登录的用户注销。只是一个想法,但应该行得通。DefaultUserSession的备份-将其备份到Redis,用于其他目的,但应足以演示该方法。

也从持久授权表中删除
refresh\u令牌
?我通过在Redis(ITicketStore)中缓存会话来管理它,如果用户在新会话中登录,则键为userId+sessionId;如果用户在新会话中登录,则键为userId+sessionId;如果用户在新会话中登录,则键为userId+sessionId;如果用户在新会话中登录,则键为userId,则键为userId;如果用户在新会话中登录,则键为userId,则键为userId,则键为userId;如果用户在新会话中登录,则键为userId,则键为userId,则键为userId;如果用户