httpsession 是用 redis 存的 如下,如果是 Object 的返回或者 Map<String,Object>的,那么每次请求这个接口在 redis 里可以看到 token 的值都会更新
@RestController
@RequestMapping(value = "/account")
public class ForgetController {
private final ForgetService forgetService;
@Autowired
private ForgetController(ForgetService forgetService) {
this.forgetService = forgetService;
}
//调用 getToken 的 service
@PostMapping(value = "/forget/token")
public Object getTokenController(HttpSession httpSession) {
return forgetService.getTokenService( httpSession);
}
}
@Service
public class ForgetService {
//UUID 生成字符串,然后存到 httpsession 里,并且返回
public Object getTokenService(HttpSession httpSession) {
Map<String, Object> map = new HashMap<>(8);
String token = UUID.randomUUID().toString();
//创建一个 session key 为 token
httpSession.setAttribute("token", token);
map.put("status", ErrorEnum.TOKEN_SUSSCESS.getStatus());
map.put("message", ErrorEnum.TOKEN_SUSSCESS.getMessage());
map.put("data", httpSession.getAttribute("token"));
return map;
}
}
但是如果 controller 那里改成 Callable<object>/Callabl<Map<String, Object>>的话,就只会出现第一次请求的时候,redis 里 token 的值更新了,再次请求,token 的值还是不变
</object>