java - 如何在从移动客户端调用的 Spring REST Web 服务中创建和销毁 session

标签 java spring web-services rest session

我有 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/

相关文章:

Java HTTP Servlet 重复提交

java - 关闭 Spring Boot 应用程序时无法取消注册 DataSource JMX MBean

java - 如何根据sys_updated_on过滤serviceNow事件记录

java - CXF 客户端在 MyEclipse 中工作正常,但在 Tomcat 中出错

java - TableView - 编辑焦点单元格

Spring批量多线程: throttle-limit impact

java - Rsocket 服务器异常 : No handler for destination '' (destination does not pass from client to server)

Java Web 服务 - 解析响应文本的框架

java - 有没有办法访问之前创建的 Guice 注入(inject)器?

java - 从两点计算角度的精度损失