spring-security-oauth2 +jwt

甜的柠檬酸 2020-09-13 10:52:41
我在使用spring-security-oauth的时候,使用jwt代替了默认的token,然后使用RSA签名算法,认证中心保存私钥,生成jwt token然后分发到下面的微服务上,下面的微服务使用公钥验签。

现在遇到的问题:
用户重复登录,由于jwt是无状态的,无法感知。
...全文
2090 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
tianfang 2020-09-14
  • 打赏
  • 举报
回复
引用 6 楼 甜的柠檬酸 的回复:
[quote=引用 4 楼 tianfang 的回复:]增加一个session处理,保存用户,ip,agent(浏览器),其他信息(就是http request中的内容),判断重复登录规则就是用户相同,ip,agent不同就是重复登录,取消相同用户之前的session,产生一个新session
session不太好吧,我这是分布式架构的,还有网关什么的[/quote] session是可以保存在数据库或者缓存中的
游北亮 2020-09-14
  • 打赏
  • 举报
回复
所以你应该是在网关上判断登录,生成的token必须跟用户设备有关,比如根据 imei 或用户的ip+userAgent生成Token。 服务器只保存最后一次登录的Token,之前的全部抛弃就好了, 还有啥问题?
甜的柠檬酸 2020-09-14
  • 打赏
  • 举报
回复
引用 4 楼 tianfang 的回复:
增加一个session处理,保存用户,ip,agent(浏览器),其他信息(就是http request中的内容),判断重复登录规则就是用户相同,ip,agent不同就是重复登录,取消相同用户之前的session,产生一个新session
session不太好吧,我这是分布式架构的,还有网关什么的
甜的柠檬酸 2020-09-14
  • 打赏
  • 举报
回复
引用 3 楼 水边2 的回复:
在a端登录,然后在b端登录,要把a端的登录踢掉,是吗? 这种业务场景,不适合jwt,必须要中心方案。 1、用户登录都要在服务端判断token是否有效。 2、用户最后一次登录,都要清除之前的token。
中心,我现在用的是网关,有一个认证中心
tianfang 2020-09-14
  • 打赏
  • 举报
回复
增加一个session处理,保存用户,ip,agent(浏览器),其他信息(就是http request中的内容),判断重复登录规则就是用户相同,ip,agent不同就是重复登录,取消相同用户之前的session,产生一个新session
游北亮 2020-09-14
  • 打赏
  • 举报
回复
在a端登录,然后在b端登录,要把a端的登录踢掉,是吗? 这种业务场景,不适合jwt,必须要中心方案。 1、用户登录都要在服务端判断token是否有效。 2、用户最后一次登录,都要清除之前的token。
甜的柠檬酸 2020-09-14
  • 打赏
  • 举报
回复
我就是不知道要怎么做重复登录的这个功能,就是要不能让用户多端登录。
tianfang 2020-09-14
  • 打赏
  • 举报
回复
你要解决的问题是什么?处理重复登录的规则是什么
甜的柠檬酸 2020-09-14
  • 打赏
  • 举报
回复
引用 7 楼 水边2的回复:
所以你应该是在网关上判断登录,生成的token必须跟用户设备有关,比如根据 imei 或用户的ip+userAgent生成Token。 服务器只保存最后一次登录的Token,之前的全部抛弃就好了, 还有啥问题?
这种要怎么实现呢,有比较好的demo嘛,第一次写权限,不太懂

67,515

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧