Spring security - 自定义保持活动控制器

Posted

技术标签:

【中文标题】Spring security - 自定义保持活动控制器【英文标题】:Spring security - custom keep alive controller 【发布时间】:2015-02-17 00:21:34 【问题描述】:

是否可以公开一个带有保持活动控制器的控制器,该控制器接收 userId \ SessionID 并刷新目标用户的会话?

即:

     @RequestMapping(value = "/keepalive", method = RequestMethod.POST, consumes = MediaType.APPLICATION_JSON_VALUE)
@ResponseStatus(value = HttpStatus.OK)
public void keepalive(@RequestBody String userIdOrSessionId) 

      this.refreshSessionForUser(userIdOrSessionId);

【问题讨论】:

【参考方案1】:

如果您知道会话 ID,那么您可以使用该会话 ID 发送请求(设置 JSESSIONID cookie),servlet 容器将重置该会话的超时(假设这就是您所说的“刷新” )。我不知道有任何其他标准方法,但您可能可以根据您正在使用的实际容器编写自定义代码。

类似:

URLConnection connection = new URL(yourKeepAliveUrl).openConnection();
connection.addRequestProperty("Cookie", "JSESSIONID=<theSessionId>");
connection.connect();

应该这样做。

实际的保持活动 URL 不必做任何事情。您只需要某种方式来调用请求。

【讨论】:

这行得通,虽然它有“黑魔法”的味道;)我希望存在更直接的方法。

以上是关于Spring security - 自定义保持活动控制器的主要内容,如果未能解决你的问题,请参考以下文章

仅使用 Spring Security 自定义令牌无状态保护 REST 控制器,同时保持常规状态完整 Web 登录正常工作

Spring-security:即使在 JVM 重启后也能保持活动会话

Spring Security 无法注销

spring security自定义指南

Spring Security入门(3-6)Spring Security 的鉴权 - 自定义权限前缀

Spring Boot + Spring Security自定义用户认证