编程菜小白 2023-03-24 22:47 采纳率: 0%
浏览 13

前后端分离登录后遇到的问题

首先,这是一个前后端分离的单体项目
后端用拦截器拦截所有请求并排除了登录注册接口,现在我用前端页面访问后端接口,登录完成之后访问其它接口提示没有登录。但是使用swagger2接口文档没有发现此问题,用户信息通过request.getSession().setAtraubate()保存,登录之后立马输出getAtraubate是有数据的,但是我登录后跳转到另一个前端页面,从这个页面访问其它需要登录后才能访问的接口显示没有登录,也就是说刚刚保存的数据为Null了。奇怪的是用接口文档访问接口没有出现问题,求解决

  • 写回答

2条回答 默认 最新

  • IT_service_mesh 2023-03-24 22:57
    关注

    参考GPT和自己的思路:根据您的描述,推测您可能遇到了前后端分离应用中的 Session 管理问题。在前后端分离应用中,前端通过 Ajax 异步提交数据到后端,后端产生的 Session 信息并不能直接传递给前端,因此需要通过一些特殊的手段维持会话状态。常见的方法是在客户端存储 Session ID,然后在每个 Ajax 请求中携带这个 Session ID,以便后端能够正确地恢复会话信息。

    在您的情况下,似乎是在登录之后,保存在 Session 中的数据在前端页面跳转后丢失了,导致后续的接口请求无法识别登录状态。这可能是因为前端在页面跳转时没有正确地维护会话状态,导致新的请求无法正确地携带保存的 Session ID。

    解决这个问题的方法有很多,其中一种常见的做法是使用 Token 代替 Session ID,将 Token 存储在客户端的 Cookie 中,在每个 Ajax 请求中携带这个 Token,以便后端能够正确地恢复会话信息。同时,在页面跳转时需要确保 Token 的正确性,并将 Token 回传到新页面,以保证会话状态的正确性。

    另外,您提到使用 Swagger 调用接口时没有出现这个问题,可能是因为 Swagger 默认会在每个请求中携带 Session ID,以保证接口调试的正确性。因此,您也可以参考 Swagger 的实现方式,尝试在前端页面中正确地维护会话状态,以解决这个问题。

    评论

报告相同问题?

问题事件

  • 创建了问题 3月24日