目前,当用户注销注销过程正常但用户仍然在同一屏幕上时,仍然可以看到安全数据。
退出ServiceStack后强制浏览器重定向的最佳做法是什么?
答案 0 :(得分:0)
服务器无法强制执行客户端重定向。在您注销后,客户真的可以强制执行数据安全性。如果客户端已经信任安全数据,那么在会话过程中,您需要相信客户端会在会话结束时对其进行适当保护。
虽然您可以让ServiceStack在注销时向客户端发送重定向标头,但没有任何东西需要客户端实际执行该操作。
如果JavaScript客户端向ServiceStack发出AJAX请求以退出,则重定向响应不会影响显示安全数据的页面,因为AJAX请求在与显示数据的页面不同的范围内有效运行,并且这样页面就不会受到重定向的影响。因此重定向是无用的,除非客户端明确提供了处理此类事件的机制。
客户必须负责离开安全数据本身。最佳做法是:
在调用注销操作的成功方法中,您应该:
如果您已正确保护服务,那么浏览历史记录仍应触发会话检查,此会话检查将不再是有效会话,您应该被重定向。
您之前提到过使用AngularJS。如果您使用$http
服务执行此操作,则可以使用success
回调,如下所示:
$http({method: 'POST', url: '/auth/logout', data: { provider: "logout" }}).success(
function(data, status, headers, config) {
$scope.someValue = null; // Remove sensitive values from the scope (though it should be cleared up anyway with the redirect to a different state)
$cookieStore.remove('ss-id'); // Remove the cookie
$state.transitionTo('login'); // Redirect to login state
}
);
此示例假设您已注入$ http,$ cookieStore,$ state providers
希望这有帮助。