使用postman测试接口,解决Session共享问题

使用postman测试接口,解决Session共享问题

问题发现与解决:

验证码信息:

{
     "status" :   200 ,
     "msg" :   "发送成功" ,
     "data" :   "810661"
}
 

登录接口,登录时发现验证码不正确,通过调试得知,第二次接口访问从session获取的验证码的值是null,因此返回验证码不正确:

最后也就是将这个问题归咎于 验证码的获取与验证,在AController里面获取生成验证码,放到session,如何在BController里面获取? 也就是我们常件的spring如何共享controller里面的session问题!

SessionSetController

@RestController
public class SessionSetController {
    
    @GetMapping(value = "/set")
    public String setSessionAttribute(HttpSession session){
        String uuid = UUID.randomUUID().toString();
        session.setAttribute("uuid",uuid);
        return uuid;
    }
}

SessionGetController

@RestController
public class SessionGetController {

    @GetMapping(value = "/get")
    public Boolean getSessionAttribute(HttpSession session){
        String uuid = (String) session.getAttribute("uuid");
        if ("uuid".equals(uuid)){
            return true;
        }else {
            return false;
        }
    }
}

测试发现,从第二个session获取到的验证码是空的:

结论:

正常情况下,不同controller之间的session是没有共享的,要实现session之间的共享,需要通过其他方法来实现,比如 Spring Session 分布式存储 Session 、使用 Redis+Token的方式 两种常见的方式。