【问题标题】:Heartbeat/keep-alive service to refresh CSRF token用于刷新 CSRF 令牌的心跳/保持活动服务
【发布时间】:2016-08-07 14:09:19
【问题描述】:
我们有一个完全面向服务的 Angular Web 应用程序,并且 ng 前端通过 ng-services 使用 REST Web 服务(到目前为止是标准的)。
为避免来自机器人或程序的任何自动 POST 请求,我们使用了 CSRF(跨站点请求伪造)令牌,该令牌经过服务器验证并在 15 分钟后过期。
问题:如果我们在同一页面上的长时间会话没有重新加载,令牌就会过期(例如在精灵期间或由于长表单)。
这个想法是建立一个保持活动的服务(心跳)以在后台自动“刷新”会话(直到客户浏览器打开)。
有什么想法吗?最佳实践?
谢谢
【问题讨论】:
标签:
javascript
angularjs
token
frontend
csrf-protection
【解决方案1】:
在后端创建一个keep-alive服务来刷新
@RequestMapping(value = "/api/keep-alive", method = RequestMethod.GET)
public boolean keepAlive() {
//TODO refresh token session
return true;
}
在您的主控制器位置:
var v = setInterval(function () {
currentlyFetching = $http.get('api/keep-alive');
}, 15 * 1000);
您的保活/心跳服务已经到位。