Heartbeat/keep-alive 刷新 CSRF 令牌的服务
Heartbeat/keep-alive service to refresh CSRF token
我们有一个 Angular 完全面向服务的 Web 应用程序,并且 ng-front 端正在通过 ng-services(目前为标准)使用 REST Web 服务。
为了避免来自机器人或程序的任何自动 POST 请求,我们使用 CSRF(跨站点请求伪造)令牌,该令牌经过服务器验证并在 15 分钟后过期。
问题:如果我们在同一页面上有很长时间的会话而没有重新加载,则令牌会过期(例如在精灵期间或因为长表单)。
我们的想法是建立一个保持活动的服务(心跳)'refresh' 自动在后台会话(直到客户浏览器打开)。
有什么想法吗?最佳实践?
谢谢
在后端创建一个保持活动的服务来刷新
@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);
并且您的 keep-alive/heartbeat 服务已经到位。
我们有一个 Angular 完全面向服务的 Web 应用程序,并且 ng-front 端正在通过 ng-services(目前为标准)使用 REST Web 服务。 为了避免来自机器人或程序的任何自动 POST 请求,我们使用 CSRF(跨站点请求伪造)令牌,该令牌经过服务器验证并在 15 分钟后过期。
问题:如果我们在同一页面上有很长时间的会话而没有重新加载,则令牌会过期(例如在精灵期间或因为长表单)。
我们的想法是建立一个保持活动的服务(心跳)'refresh' 自动在后台会话(直到客户浏览器打开)。
有什么想法吗?最佳实践? 谢谢
在后端创建一个保持活动的服务来刷新
@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);
并且您的 keep-alive/heartbeat 服务已经到位。