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>这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.