Spring Security学习总结二

 1. <bean id="httpSessionContextIntegrationFilter"
 class="org.springframework.security.context.HttpSessionContextIntegrationFilter"/>
    httpSessionContextIntegrationFilter是集成过滤器的一个实现,在用户的一个请求过程中,用户的

认证信息通过SecurityContextHolder(使用ThreadLoacl实现)进行传递的,所有的过滤器都是通过

SecurityContextHolder来获取用户的认证信息,从而在一次请求中所有过滤器都能共享

Authentication(认证),减少了HttpRequest参数的传送,下面的代码是从安全上下文的获取

Authentication对象的方法:
 SecurityContext context = SecurityContextHolder.getContext();
 Authentication authentication = context.getAuthentication();


首先我们需要了解Spring Security为我们提供的另外一个重要的组件,

org.springframework.security.userdetails .UserDetails接口,它代表一个应用系统的用户,该接口定

义与用户安全信息相关的方法:

    String getUsername():获取用户名;

    String getPassword():获取密码;

    boolean isAccountNonExpired():用户帐号是否过期;

    boolean isAccountNonLocked():用户帐号是否锁定;

    boolean isCredentialsNonExpired():用户的凭证是否过期;

    boolean isEnabled():用户是否处于激活状态。

    当以上任何一个判断用户状态的方法都返回false时,用户凭证就被视为无效。UserDetails接口还

定义了获取用户权限信息的getAuthorities()方法,该方法返回一个GrantedAuthority[]数组对象,

GrantedAuthority是用户权限信息对象,这个对象中定义了一个获取用户权限描述信息的

getAuthority()方法。

    这样,我们就可以在系统中获取用户的相关信息了,需要使用到Authentication对象定义的Object

getPrincipal()方法,这个方法返回一个Object类型的对象,通常可以将它转换为UserDetails,从而

可以获取用户名,密码以及权限等信息。代码如下:
 UserDetails details = (UserDetails)authentication.getPrincipal();
 GrantedAuthority[] authority = details.getAuthorities();


2.这个Bean可以阻止用户在进行了一次成功登录以后在进行一次成功的登录。在 applicationContext

-security.xml配置文件添加sessionController的配置:

 <bean id="concurrentSessionController"
 class="org.springframework.security.concurrent.ConcurrentSessionControllerImpl"
    maximumSessions="1"
    exceptionIfMaximumExceeded="true"
   sessionRegistry-ref="sessionRegistry"/>
 <bean id="sessionRegistry"
 class="org.springframework.security.concurrent.SessionRegistryImpl"/>
    maximumSessions属性配置了只允许同一个用户登录系统一次,exceptionIfMaximumExceeded属

性配置了在进行第二次登录是是否让第一次登录失效。这里设置为true不允许第二次登录。要让此功

能生效,我们还需要在web.xml文件中添加一个监听器,以让Spring Security能获取Session的生命周

期事件,配置如下:
 <listener>
      <listener-class>
         org.springframework.security.ui.session.HttpSessionEventPublisher
      </listener-class>
 </listener>

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值