账户登录时,要求一个账户同时只能一人登录,配置中的步骤有三个:

1.在web.xml中配置HttpSessionEventPublisher

<listener>
<listener-class>org.springframework.security.web.session.HttpSessionEventPublisher</listener-class>
</listener>

2.在security.xml中配置session management

session-management标签放在http标签中
<session-management invalid-session-url="/login?invalid_session">
<concurrency-control max-sessions="1" error-if-maximum-exceeded="false" expired-url="/login?expired"/>
</session-management>

其中的"max-session"属性表示最大session会话数量,默认是1;"error-if-maximum-exceeded"属性默认是false,表示同一账号,先登录的,会被后登录者强制下线,为true时,表示一旦有用户登录,其他用户将无法登录。

3.重写user登录相关类中的equals和hashCode方法,若扩展了UserDetails,也要重写其equals和hashCode方法

User.java

@Override
public boolean equals(Object o) {
if (this == o) return true;
if (!(o instanceof User)) return false; User that = (User) o; if (guid != null ? !guid.equals(that.guid) : that.guid != null) return false; return true;
} @Override
public int hashCode() {
return guid != null ? guid.hashCode() : 0;
}

StUserDetails.java

    @Override
public boolean equals(Object o) {
if (this == o) return true;
if (!(o instanceof StUserDetails)) return false; StUserDetails that = (StUserDetails) o; if (grantedAuthorities != null ? !grantedAuthorities.equals(that.grantedAuthorities) : that.grantedAuthorities != null)
return false;
if (user != null ? !user.equals(that.user) : that.user != null) return false; return true;
} @Override
public int hashCode() {
int result = user != null ? user.hashCode() : 0;
result = 31 * result + (grantedAuthorities != null ? grantedAuthorities.hashCode() : 0);
return result;
}

初学,若有错误之处,望大家指教!

												

最新文章

  1. double函数和int函数
  2. Java使用代理Proxy访问网络及其验证
  3. 目前已经知道的乐视所有产品各个型号的强刷方法!更新X50
  4. centos中安装chromium和flash
  5. java自定义接口
  6. 在Ubuntu14.04下安装运行Unity-tweak-tool报错scheme missing的解决办法
  7. JavaSE复习日记 : 递归函数
  8. java 实例变量和类变量的区别
  9. iOS中 简单易懂的秒杀倒计时/倒计时
  10. 领域驱动设计(DDD:Domain-Driven Design)
  11. 《Blue Flke》团队项目的原型设计与开发
  12. react全家桶-路由
  13. js中的prototype原型解析
  14. oracle(四) 常用语句
  15. Linux安装初始化
  16. XtraEditors三、LookUpEdit、GridLookUpEdit、SearchLookUpEdit
  17. C# 执行固定个数任务自行控制进入线程池的线程数量,多任务同时但是并发数据限定
  18. 每天一个linux命令(文件上传下载文件操作):【转载】gzip命令
  19. Oracle和SQL server查询数据库中表的创建和最后修改时间
  20. BZOJ 4361 isn 容斥+dp+树状数组

热门文章

  1. Hibernate理论
  2. Codeforces 118 D. Caesar&#39;s Legions (dp)
  3. Codeforces 660 C. Hard Process (尺取)
  4. J2EE项目相对路径、绝对路径获取
  5. iOS7 各种问题解决
  6. Python之函数进阶
  7. 使用Canvas把照片转换成素描画
  8. EasyUI ComboBox默认值
  9. Backbone
  10. 转载:你可能没注意的CSS单位