前后端分离中session问题

本文探讨了前后端分离架构中Session管理的问题,特别是在AOP日志记录时遇到的sessionId不一致现象。通过将用户信息封装为token并存于request header,解决了每次请求产生新session的问题。
起因
在公司业务中,使用的前后端分离开发。但是因为是第一次用,在做AOP日志记录的时候,发现当用户登录的时候把用户信息存在session中,在AOP方法中获取的session。但是这两个session的sessionId并不相同,即每次的session都是新的。所以思考了一下前后端分离的Session问题。
jsp中的session为什么每次都是一样的
在jsp中,当访问系统的时候,都会在cookie中存一个值(如下图所示)。当每次发送请求的时候,都会携带这个sessionId,因为这个id值是相同的,所以可以保证这次回话中的session之后一个。

如何解决
因为在登录之后,会在cookie中存入一个token,可以通过这个token查询到用户信息,所以每次请求的时候都把这个token放在request header中携带过去,需要用的时候对这个token进行解析,这个时候都获取到用户信息。
代码
  1. // 创建axios实例
  2. const service = axios.create({
  3. baseURL: process.env.BASE_API, // apibase_url
  4. timeout: 15000 // 请求超时时间
  5. })
  6. // request拦截器
  7. service.interceptors.request.use(config => {
  8. var token = getToken()
  9. if (token) {
  10. <!--设置请求头部信息-->
  11. config.headers['Authorization'] = token
  12. }
  13. return config
  14. }, error => {
  15. // Do something with request error
  16. Promise.reject(error)
  17. })
  1. HttpServletRequest request =((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
  2. String username=null;
  3. String authorization = request.getHeader("Authorization");
  4. OperateRecord operateRecord=new OperateRecord();
  5. User userInfo = userService.getUserInfo(authorization);

这样就可以解决问题了……

            </div>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值