ACGavin
ACGavin
采纳率100%
2020-12-08 10:41

spring cloud + 普通前端工程 登录验证之后 每次接口调用sessionId都不一样

这个项目里面使用的是zuul网关,登录信息是使用sessionId作为key放到redis的。

加了过滤之后,在测试登录功能时,发现请求到网关和springboot服务时sessionId不一样,然后就在网关login验证之前加了一个 AllFilter对所有请求将sessionId取出来放到header当中,在服务里面就不使用Request中的sessionId,而是使用过网关时的sessionId(因为要过验证,只能使用过网关时的),代码如下:

功能做好之后先是使用postman测试了几遍,登录之后无论是访问和登录功能一个服务的功能,还是其他服务的功能,都可以通过验证,也就是说在过网关时都是使用的同一个session。

在前端对接口时,发现登录之后,在其他功能调用时,总是登录验证失败,通过打印信息发现登录时的sessionId和之后其他接口调用时的sessionId都不一样,而且是每个接口调用时的sessionId都不一样,那也就是说每次都是一个新的session。

在这之前有一个跨域问题,我是在网关当中配置了CorsFilter:

在找关于session的这个问题时,看到有一些说因为跨域session不一致,我感觉应该不是这个问题(我也试了一些做法,并没有解决),弄了半天实在是不知道咋解决,有大佬知道吗,求解答

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享
  • 邀请回答

7条回答

  • qq_42825101 TheWaSaiBoy 4月前

    把sessionID保存到redis或其他轻量数据库

    点赞 评论 复制链接分享
  • ACGavin ACGavin 4月前

    cookie是可以,但是感觉是不够安全,所有才用sessionId,但是就算会变,也不应该我在有效期内每次请求session都不一样啊,我用postman测试的时候,只要没有过期或者关闭就可以拿到同一个sessionId通过验证

    点赞 评论 复制链接分享
  • ACGavin ACGavin 4月前

    但是问题依然没解决,网上找了一堆的解决方法,不仅解决不了我现在的问题,就连请求到zuul网关的sessionId和到服务的sessionId不一样都没有解决(这个问题我在上面问题当中已经解决了)

    点赞 评论 复制链接分享
  • qq_42825101 TheWaSaiBoy 4月前

    只要不清楚,客户端的cookie是不会没有的,把用户的信息保存再cookie中就行了。

    点赞 评论 复制链接分享
  • qq_42825101 TheWaSaiBoy 4月前

    sessionID是一直会改变的啊,所以要用用户名来当id,或者用户标识。

    点赞 评论 复制链接分享
  • qq_42825101 TheWaSaiBoy 4月前

    感谢能采纳///泪目

    点赞 评论 复制链接分享
  • ACGavin ACGavin 4月前

    我开始就说明了登录时的sessionId作为key用来在redis中储存用户信息,我在没有过期或者没有关闭浏览器就可以不需要登录,但是现在问题是我登录之后再次发起的请求在zuul中获取到的sessionId就变了,每一次都不一样

    点赞 评论 复制链接分享