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 重启后也能保持活动会话