Spring3 Security 中配置会话管理

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

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;
    }

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

				
时间: 2024-12-20 08:15:59

Spring3 Security 中配置会话管理的相关文章

spring security中配置密码为md5的带salt加密

spring security中配置密码为md5的带salt加密 service: private Md5PasswordEncoder encoder; //spring security md5 public Md5PasswordEncoder getEncoder() { return encoder; } @Resource public void setEncoder(Md5PasswordEncoder encoder) { this.encoder = encoder; } @O

Java中的会话管理——HttpServlet,Cookies,URL Rewriting(译)

参考谷歌翻译,关键字直接使用英文,原文地址:http://www.journaldev.com/1907/java-session-management-servlet-httpsession-url-rewriting Java Web应用程序中的会话管理(Session Management)是一个非常有趣的话题.Java Servlet中的会话通过不同的方式进行管理,例如Cookie,HttpSession API,URL重写等. 这是Java Web应用程序系列教程中的第三篇文章,您可能

Spring3.x中配置DBCP2.0数据库连接池

maven工程pom.xml <project xmlns="http://maven.apache.org/POM/4.0.0"      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"     xsi:schemaLocation="http://maven.apache.org/POM/4.0.0      http://maven.apache.org/maven-v4_0_0.xs

spring boot跨域请求访问配置以及spring security中配置失效的原理解析

一.同源策略 同源策略[same origin policy]是浏览器的一个安全功能,不同源的客户端脚本在没有明确授权的情况下,不能读写对方资源. 同源策略是浏览器安全的基石. 什么是源 源[origin]就是协议.域名和端口号.例如:http://www.baidu.com:80这个URL. 什么是同源 若地址里面的协议.域名和端口号均相同则属于同源. 是否是同源的判断 例如判断下面的URL是否与 http://www.a.com/test/index.html 同源 http://www.a

使用Spring Session做分布式会话管理

在Web项目开发中,会话管理是一个很重要的部分,用于存储与用户相关的数据.通常是由符合session规范的容器来负责存储管理,也就是一旦容器关闭,重启会导致会话失效.因此打造一个高可用性的系统,必须将session管理从容器中独立出来.而这实现方案有很多种,下面简单介绍下: 第一种是使用容器扩展来实现,大家比较容易接受的是通过容器插件来实现,比如基于Tomcat的tomcat-redis-session-manager,基于Jetty的jetty-session-redis等等.好处是对项目来说

Spring中的事物管理,用 @Transactional 注解声明式地管理事务

事物: 事务管理是企业级应用程序开发中必不可少的技术,  用来确保数据的 完整性和 一致性. 事务就是一系列的动作, 它们被当做一个单独的工作单元. 这些动作要么全部完成, 要么全部不起作用 事务的四个关键属性: 原子性:事务是一个原子操作, 由一系列动作组成. 事务的原子性确保动作要么全部完成要么完全不起作用. 一致性:一旦所有事务动作完成, 事务就被提交. 数据和资源就处于一种满足业务规则的一致性状态中. 隔离性:可能有许多事务会同时处理相同的数据, 因此每个事物都应该与其他事务隔离开来,

Spring中的事务管理

一.Spring事务管理用到的三个接口 a. PlatformTransactionManager 事务管理器 b. TransactionDefinition 事务定义信息(隔离.传播.超时.只读) c. TransactionStatus 事务具体的运行状态 二.Spring为不同的持久化框架提供了不同的PlatformTransactionManager接口实现 事务 说明 org.springframework.jdbc.datasource.DataSourceTransactionM

使用Configuration Manager配置电源管理

使用Configuration Manager配置电源管理 1.概述: 电源管理,在Configuration Manager许多组织都有监控并降低他们的计算机的电源消耗需求.Configuration Manager中的电源管理将相关和一致的设置应用于组织中的计算机的 Windows 中内置的电源管理功能的利用.管理员可以在工作时间和非业务时间期间适用于计算机不同的电源设置.例如,管理员可能希望在非业务时间内计算机应用限制性更强的电源计划.其中计算机必须始终处于打开的情况下,管理员可以防止电源

SCOM 2012 配置篇(二) 配置要管理的计算机设备

本文主要介绍了如何在SCOM 2012中配置要管理的计算机设备. 打开SCOM 2012 管理控制台,如果第一次配置,会在首页界面提示您配置要管理的计算机和设备,如下图所示,直接点击即可进入安装向导. 选择要管理的计算机或者设备类型,包括如下三种: 本次试验选择windows计算机,如下图: 选择高级发现模式,类型为"服务器与客户端": 选择手动配置方式,在下图中选择"浏览或键入计算机名称": 通过浏览,输入要发现计算机名称,如下图: 执行下一步,发现计算机设备: