单点登录

常规登录逻辑在微服务中的问题

登录成功之后会将用户信息保存在Session中。但是Session也是一个对象(HashMap),也占用内存。微服务项目中,考虑到用户量特别大,会产生很多Session对象将服务器的内存消耗殆尽。

65535==Java项目中允许的最大的方法数 (一定要进行拆分)

同一个用户的Session只能在单独的服务器上被当前用户的方法共享。

总结:
微服务中的登录保存用户信息不能使用Session。
如何保存用户的登录状态?

Redis

使用Redis自定义Session。
1、如何保证所有服务器访问同一个Session
2、如何在一个服务器上登录之后,其他服务器都不需要登录?

实现单点登录的技术:
oauth2.0
jwt
自定义token(Redis中)
实现单点登录的步骤

1、启动Redis
2、写一个项目专门用来进行登录和鉴权,然后将登录和鉴权的接口暴露给其他服务。(微服务)
3、其他需要登录的服务,连接鉴权系统进行验证。

更新token过期时间
使用mq进行更新,延长token过期时间不属于业务逻辑代码的必要部分。更新过期时间不应该阻塞用户的业务代码,所以采用异步消息队列来完成。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值