我有 Spring REST webserivce 现在正在从移动客户端调用 web 服务。 首先,根据发送的值userid 和password 调用login 方法来判断登录成功或失败。
@RequestMapping(value = "/login", method = RequestMethod.POST, headers="Accept=application/json")
public @ResponseBody List<LogInStatus> getLogIn(@RequestBody LogIn person , HttpServletRequest request) {
// Call service here
List<LogInStatus> lList = logInService.getUser(person);
//service method and then in DAO database method is there
return lList;
}
现在,对于许多其他调用,我需要基于登录用户的值,因此需要保持 session 并需要获取当前用户。在注销调用时,需要销毁 session 。 如何做到这一点并实现,请帮忙出出主意。
最佳答案
您不需要手动创建 session - 这是由 servlet 容器完成的。
可以从HttpServletRequest获取session
HttpSession session = request.getSession();
或者只是将其添加为方法参数,Spring MVC 将为您注入(inject)它:
public @ResponseBody List<LogInStatus> getLogIn(@RequestBody LogIn person , HttpServletRequest request, HttpSession httpSession)
然后您可以通过 setAttribute()
/getAttribute()
在 session 中保存用户详细信息。
但是,您最好使用 Spring Security,它专用于该任务 - 请参阅@Pumpkins 的引用答案。 SecurityContext
包含有关当前登录主体的信息,您可以从 SecurityContextHolder
关于java - 如何在从移动客户端调用的 Spring REST Web 服务中创建和销毁 session ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26588310/