spring security3.x学习(11)_退出

如果我们想要在用户登陆后退出怎么办?
前边我们已经介绍过了,直接访问"/j_spring_security_logout"这个就可以被LogoutFilter类拦截,然后完成注销操作.那如果我们想做一个自定义的退出要怎么做呢?
<http auto-config="true" use-expressions="true">
  <logout invalidate-session="true" 
      logout-success-url="/" 
      logout-url="/j_spring_security_logout"/>
</http>
基于这个基本配置,系统将会寻找在logout-url属性配置的URL并实现用户的退出。使得用户退出系统将会涉及如下的三个步骤:
1.  使得HTTP session失效(如果invalidate-session属性被设置为true);
2.  清除SecurityContex(真正使得用户退出);
3.  将页面重定向至logout-success-url指明的URL。 

注意:如果我们改掉logout-url值,那么我们退出的值将会改成我们自己的logout-url值


从这个图中我们可以看出来,其实真正清理对象和资源的是LogoutHandler,我们看看她的源码会发现
public  abstract  interface  LogoutHandler
{
   public  abstract  void  logout(HttpServletRequest paramHttpServletRequest, HttpServletResponse paramHttpServletResponse, Authentication paramAuthentication);
}
其实他只有这么一个方法,如果有必要的话,我们可以实现这个接口(但是尽量不这么做),当清理完资源以后,又通过LogoutSuccessHandler这个可以重定向一个成功的url页面。就是我们刚刚提到logout标签中的logout-success-url属性值
看看书中给我们的重要信息:
"
值得注意的是,退出的处理不应该抛出异常,因为很重要的一点是要在用户的安全session中避免可能出现的潜在不一致性。所以在实现自己的安全处理时要保证异常被正确的处理和记录
"
那么,关于logout的属性还有相关的一些说明:

这是书中提到的,其实通过查看官方文档,我们会发现。其实还有一个属性 delete-cookies, 这是用来删除cookies的


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值