servicestack,logout,Authentication,Redirect,servicestack,Logout" /> servicestack,logout,Authentication,Redirect,servicestack,Logout" />

Authentication 注销ServiceStack后强制浏览器重定向的最佳方法是什么

Authentication 注销ServiceStack后强制浏览器重定向的最佳方法是什么,authentication,redirect,servicestack,logout,Authentication,Redirect,servicestack,Logout,当前,当用户注销时,注销过程正常工作,但用户保持在同一屏幕上,因此仍然可以看到安全数据 注销ServiceStack后强制浏览器重定向的最佳做法是什么?服务器不可能强制客户端重定向。实际上,在您注销后,由客户端强制执行数据的安全性。如果在会话过程中,客户机已经被安全数据所信任,那么您需要相信,当会话结束时,客户机将对其进行适当的安全保护 虽然您可以让ServiceStack在注销时向客户端发送重定向头,但并不需要客户端实际执行该操作 如果JavaScript客户端向ServiceStack发出A

当前,当用户注销时,注销过程正常工作,但用户保持在同一屏幕上,因此仍然可以看到安全数据


注销ServiceStack后强制浏览器重定向的最佳做法是什么?

服务器不可能强制客户端重定向。实际上,在您注销后,由客户端强制执行数据的安全性。如果在会话过程中,客户机已经被安全数据所信任,那么您需要相信,当会话结束时,客户机将对其进行适当的安全保护

虽然您可以让ServiceStack在注销时向客户端发送重定向头,但并不需要客户端实际执行该操作

如果JavaScript客户端向ServiceStack发出AJAX请求以注销,重定向响应不会影响显示安全数据的页面,因为AJAX请求在显示数据的页面之外的单独范围内有效运行,因此页面不受重定向的影响。因此,重定向是无用的,除非客户端显式地提供了处理此类事件的机制

客户机必须负责避开安全数据本身。最佳做法是:

在注销操作调用的成功方法中,您应该:

  • 处置内存中的任何敏感数据。i、 e.显示数据的JavaScript变量/DOM元素
  • 删除会话cookie
  • 重定向到登录
如果您已经正确地保护了服务,那么在历史记录中导航回应该仍然会触发会话检查,对于该检查,将不再存在有效的会话,并且应该将您重定向到其他位置

您之前提到过使用AngularJS。如果使用
$http
服务执行此操作,则可以使用
success
回调,如下所示:

$http({method:'POST',url:'/auth/logout',data:{provider:'logout})。成功(
函数(数据、状态、标题、配置){
$scope.someValue=null;//从作用域中删除敏感值(尽管应该通过重定向到其他状态来清除敏感值)
$cookieStore.remove('ss-id');//删除cookie
$state.transitiono('login');//重定向到登录状态
}
);    
本例假设您已注入$http、$cookieStore、$state提供程序

tl;博士
  • 客户端必须强制执行安全性。服务器重定向只应被视为对客户端的建议
  • 使用注销请求操作的成功回调来删除会话cookie,处理内存中的任何值,并从数据中重定向

希望这能有所帮助。

Hello:)您对浏览器重定向问题有何想法?谢谢史考特,谢谢你的提醒;)。你的回答很好地解释了这一点。我的主要问题是使用javascript清除数据,而javascript显然可以在浏览器中被拦截和修改。我接受你的观点,不管怎样,这个客户在某个时候是值得信任的。我已经实现了一个http身份验证拦截器,这样即使某些数据仍然可见,对标记为[Authenticate]的服务的任何后续调用都将导致显示一个登录表单。