`
flashing
  • 浏览: 357327 次
  • 性别: Icon_minigender_1
  • 来自: 大连
社区版块
存档分类
最新评论

spring security 3.0的控制一个帐号只允许一次登录

阅读更多
spring security 3.0里面明确的说明了:
session-management段里面的concurrency-control是控制一个帐号最多允许登录多少次的,比如<concurrency-control max-sessions="1"/>就是一次,2当然是两次。
所有搜到的帖子,凡是提到concurrency-control这个的,我不知道有没有人试过真的好用吗?
我配置了以后发现根本就控制不住。

打开了springsecurity的debug日志,还是难以发现原因。
因为网上根本搜不到几个这方面的错误,让我误以为是我个人配置问题,就没有看代码;最后不得已挂上了spring security的代码一看,直接晕菜。
org.springframework.security.web.authentication.session.ConcurrentSessionControlStrategy
里面的checkAuthenticationAllowed方法,调用了sessionRegistry.getAllSessions,用authentication.getPrincipal(),也就是UserDetails实现对象。
但是sessionRegistry存储的时候使用的是Hash的数据结构,所以UserDetails实现类必须重写equals和hashCode。

另外网上发帖的基本就是抄来抄去,其实只要你加了concurrency-control配置,即使不写max-sessions属性,在org.springframework.security.web.authentication.session.ConcurrentSessionControlStrategy里面maximumSessions的默认值是1!

写下来省的后人走弯路。
分享到:
评论
4 楼 flashing 2010-11-26  
peak 写道
楼主说的这个,我试了,管用,网上抄的做法,但是确实起作用,不知道楼主为啥不管用

那就很奇怪了,security代码里面明明是Hash的结构做Key。
3 楼 flashing 2010-11-26  
lygivw 写道
首先,你需要把下面的监听器添加到你的web.xml文件里,让Spring Security获得session生存周期事件:
<listener>
  <listener-class>
     org.springframework.security.web.session.HttpSessionEventPublisher
  </listener-class>
</listener>

这些都没问题,严格按照文档做的。
2 楼 peak 2010-11-26  
楼主说的这个,我试了,管用,网上抄的做法,但是确实起作用,不知道楼主为啥不管用
1 楼 lygivw 2010-11-26  
首先,你需要把下面的监听器添加到你的web.xml文件里,让Spring Security获得session生存周期事件:
<listener>
  <listener-class>
     org.springframework.security.web.session.HttpSessionEventPublisher
  </listener-class>
</listener>

相关推荐

    spring security3.0所有最新开发包及源码及文档

    Spring Security 是一个强大的安全框架,主要用于Java应用的安全管理。它为Web应用程序提供了全面的身份验证、授权和访问控制功能。在Spring Security 3.0版本中,这个框架进行了大量的改进和增强,以适应不断变化的...

    spring security3.0 源码

    spring-security-web-3.0 spring-security-taglibs-3.0 spring-security-openid-3.0 spring-security-core-3.0 spring-security-config-3.0 spring-security-aspects-3.0 spring-security-acl-3.0

    spring security3.0所需要的最精简的jar包

    Spring Security 是一个强大的安全框架,主要用于Java应用的安全管理。它提供了认证、授权和访问控制功能,使得开发者可以轻松地在应用程序中实现复杂的安全需求。在3.0版本中,Spring Security 已经相当成熟,提供...

    spring security3.0帮助文档

    ### Spring Security 3.0权限控制详解 Spring Security是Spring框架的一个强大且高度可定制的安全模块,用于保护基于Web和非Web的应用程序。版本3.0的发布带来了许多改进和新特性,使其成为处理安全需求的首选解决...

    spring security3.0 demo

    Spring Security 是一个强大的且高度可定制的身份验证和访问控制框架,用于保护基于 Java 的应用程序。在3.0版本中,它提供了许多关键功能,旨在确保应用程序的安全性,防止未经授权的访问,并实现用户身份验证和...

    springMVC+springSecurity3.0+maven

    标题 "springMVC+springSecurity3.0+maven" 指的是一个集成项目,它结合了Spring MVC、Spring Security 3.0和Maven这三个关键的Java开发工具和技术。让我们逐一深入理解这些技术及其相互之间的关系。 首先,Spring ...

    SpringSecurity3.0 教程

    SpringSecurity3.0是Spring框架的一个重要扩展,主要用于企业级应用的安全管理,提供了一套全面的访问控制和安全解决方案。本教程将深入探讨SpringSecurity3.0的核心概念、配置及其实现方式,帮助开发者理解并掌握...

    SpringSecurity3.0 Demo

    总的来说,"SpringSecurity3.0 Demo"项目是一个深入学习和实践SpringSecurity的好机会,通过对这个项目的研究,我们可以了解到SpringSecurity如何保障应用程序的安全,以及如何在实际开发中有效地利用它的功能。

    利用spring security控制同一个用户只能一次登陆

    标题中的“利用Spring Security控制同一个用户只能一次登录”是指在基于Spring Security的Web应用程序中实现单点登录(Single Sign-On, SSO)的功能,确保同一时间只有一个设备或浏览器会话可以登录同一用户的账户。...

    SpringSecurity3.0.x官方参考文档(英文+中文双解版)

    Spring Security 是一个强大的和高度可定制的身份验证和访问控制框架,广泛应用于Java企业级应用的安全管理。Spring Security 3.0.x 版本是该框架的一个重要里程碑,它提供了许多安全特性和改进,使得开发者能够更加...

    Spring Security 3.0 权限管理

    Spring Security 3.0 是一个强大的安全框架,用于在Java应用程序中实现全面的安全管理解决方案。它专注于提供身份验证、授权和访问控制功能,确保只有经过验证的用户才能访问受保护的资源。本教程将深入探讨Spring ...

    spring3.0+spring security3.1.4 api chm 中文版

    Spring 3.0是Spring框架的一个重大更新,引入了许多新特性和改进。它增强了IoC(Inversion of Control)容器,使得依赖注入更加灵活。AOP(Aspect Oriented Programming)支持也得到了扩展,不仅支持传统的基于注解...

    Spring-Security2.0 和 3.0中文文档

    Spring Security 是一个强大的和高度可定制的身份验证和访问控制框架,用于Java应用程序。它为Web应用和企业级应用提供了全面的安全解决方案。这个框架允许开发者轻松地实现用户认证、权限授权、安全配置以及其他...

    SpringSecurity 3.0基础配置实例+Mysql数据库文件+Jar包

    SpringSecurity3.0相对比较稳定。本实例包含SpringSecurity3.0的基本配置,包含所需的Jar包和mysql数据库文件,直接导入myeclipes中并导入数据库即可运行,配置文件简单易懂,适合SpringSecurity初学者配置入门。...

    spring security 3.0入门教程PDF

    Spring Security 3.0是该框架的一个重要版本,提供了许多安全控制功能,用于保护Web应用程序不受到黑客的攻击。 ### Spring Security 3.0入门知识点: 1. **Spring Security概述**: Spring Security是一个提供...

    教你使用 SpringSecurity 3.0

    教你使用 SpringSecurity 3.0 一步一步教你使用SpringSecurity,从保护web应用到保护业务方法调用

    spring security 3.0x remember-me 免登陆

    Spring Security 是一个强大的Java安全框架,它为Web应用程序提供了全面的安全解决方案。在3.0.x版本中,"remember-me"功能是Spring Security提供的一种便捷方式,允许用户在关闭浏览器后仍能在一段时间内保持登录...

    基于Spring Boot 3.0、Spring Security 6和Vue 3的现代化前后端分离架构设计源码

    本项目为基于Spring Boot 3.0、Spring Security 6和Vue 3构建的现代化前后端分离架构设计源码,包含92个文件,涵盖35个Java类、12个Vue组件、12个TypeScript文件、12个PNG图片文件、5个JSON配置文件、4个XML配置文件...

    Spring-Security3.0自定义表结构

    在企业级应用开发中,Spring Security作为Spring框架的一个子项目,提供了一套完整的权限管理和安全性解决方案。它不仅能够处理身份验证(authentication)和授权(authorization),还提供了对加密、CSRF保护、会话...

Global site tag (gtag.js) - Google Analytics