当同一用户从不同设备登录时,Spring-OAuth会在access_token表中插入多条记录。应该怎么做才能防止Spring创建多个访问令牌。用户应该能够同时从多个设备登录。
使用2.0.3.RELEASE
答案 0 :(得分:0)
TokenStore
使用AuthenticationKeyGenerator
创建一个密钥,用于在商店/数据库中查找访问令牌。默认情况下使用的DefaultAuthenticationKeyGenerator
使用用户名,clientId和范围创建密钥。如果它们相同,则返回相同的密钥,这将导致返回相同的访问令牌。创建自己的AuthenticationKeyGenerator
并将其注入TokenStore
实例。
问题是你想要这样做的原因。用户有多个令牌真的没有坏处。如果要在所有设备上注销用户,请使用用户名ping后端,以便为该用户终止所有令牌。
答案 1 :(得分:0)
我使用了一个建议的here解决方案,并将@Transactional添加到了AuthorizationServerConfiguration的tokenStore()方法中。
添加@Transactional注释允许同一用户从多个客户端登录,但是,从一个客户端注销通常会导致oauth_access_token失效(但并非总是如此!),因此其他客户端也会失效。我还在调查......
为了它的价值,我还将spring-security-oauth2的版本(希望这是你的选择)加速到2.0.9.RELEASE和spring-security-web到3.2.9.RELEASE。
答案 2 :(得分:0)
只是一种解决方法,并且可以处理服务的多个实例。只需先获取令牌,然后找到它即可,否则创建它。
"--no-sandbox","'--disable-dev-shm-usage"
然后注册:
org.openqa.selenium.WebDriverException: unknown error: session deleted because of page crash
from tab crashed