关于前后端分离的单点登录问题?-灵析社区

喝一杯吧可以吗

假设我有三个前端项目,是不是他们都走一个后端服务9090去同一个页面登录和接口获取token,这样就算单点登录?然后他们之后其他需求再各自请求自己后端服务完成需求比如9091 9092 9093。 以java为例,我需要创建sso模块/9091模块 9092模块 9093模块这样吗 可以用redis解决

阅读量:135

点赞量:0

问AI
是的,使用一个服务登录。 可以使用spring-session,设置SessionRepository接口将session存储方式改成redis以便不同服务都可访问,然后将session id返回给前端,前端带着sessionId访问任意服务,任意服务都拿着sessionId的,去redis查找。 "image.png" (https://wmprod.oss-cn-shanghai.aliyuncs.com/c/user/20240926/c0e893c1dab4fdd32ed23121de23bcf1.png) "image.png" (https://wmprod.oss-cn-shanghai.aliyuncs.com/c/user/20240926/8b1a0974468ca09dd53692f59cbcb09d.png) sessionId可以放到cookie或者header中 "image.png" (https://wmprod.oss-cn-shanghai.aliyuncs.com/c/user/20240926/5bc0f7aa2fecddf159e2ccc9b52b29e0.png) "image.png" (https://wmprod.oss-cn-shanghai.aliyuncs.com/c/user/20240926/20f18c6dc1bbacc1bf910048bd10529d.png) 注意:每个项目都需要引入spring-session并且配置一样,HttpSessionIdResolver从cookie或者header读取sessionId,然后SessionRepository从redis根据sessionId读取session,这样就实现了多个服务共享session的功能,也就是单点登录的功能。 SessionRepository的实现还有jdbc可以将session存到数据库,如果你三个服务在一台电脑部署,甚至可以自定义一个SessionRepository,将session存储到文件中,以供多个服务共享。