主要涉及的类如下:
HttpSessionEventPublisher 监听session创建和销毁
ConcurrentSessionFilter 每次有http请求时校验,看你当前的session是否是过期的
SessionRegistryImpl 存放session中的信息,并做处理
ConcurrentSessionControllerImpl 用户登入登出的控制
SessionInformation 存储session中信息的model
其中web.xml还需要添加:
<!-- 登入和登出时对SessionRegistryImpl进行处理 -->
<listener>
<listener-class>org.springframework.security.ui.session.HttpSessionEventPublisher</listener-class>
</listener>
spring配置文件:
<beans:bean id="currentController"
class="org.springframework.security.concurrent.ConcurrentSessionControllerImpl">
<beans:property name="exceptionIfMaximumExceeded"
value="false" />
其实要实现列表当前登陆的用户,并踢出用户,就是调用springsecurity的
org.springframework.security.concurrent.SessionRegistryImpl
就可以满足要求了,当然,用这个类来做踢出用户的功能,不是很好,不过也懒得去动这个源码了,由于mini-web的示例是struts2的,所以我就简单的写了个Action去调用这个类来操作,如果要用到公司的项目中,那还要放到controller里面去才行,SessionAction.java:
package org.springside.examples.miniweb.web.user;
import java.util.ArrayList;
import java.util.List;
import org.apache.struts2.config.ParentPackage;
import org.apache.struts2.config.Result;
import org.apache.struts2.config.Results;
import org.apache.struts2.dispatcher.ServletActionRedirectResult;
import org.springframework.security.concurrent.SessionInformation;
import org.springframework.security.concurrent.SessionRegistry;
import org.springside.modules.web.struts2.CRUDActionSupport;
import org.springside.modules.web.struts2.SimpleActionSupport;
@ParentPackage("default")
@Results( { @Result(name = CRUDActionSupport.RELOAD, value = "/session", type = ServletActionRedirectResult.class) })
public class SessionAction extends SimpleActionSupport {
private static final String RELOAD = "reload";
private static final long serialVersionUID = 8071034786218297672L;
private String loginId;
private SessionRegistry sessionRegistry;
ListloginIds;
//默认方法
public String execute() throws Exception {
return list();
}
//列表当前登录的用户的loginIds
public String list() throws Exception {
Object[] loginIds_obj = sessionRegistry.getAllPrincipals();
if (loginIds_obj != null && loginIds_obj.length > 0) {
loginIds = new ArrayList(loginIds_obj.length);
for (int i = 0; i < loginIds_obj.length; i++) {
loginIds.add((String) loginIds_obj[i]);
}
}
return SUCCESS;
}
//根据传入的loginId,踢出某用户
public String destroy() throws Exception {
SessionInformation[] sessions_arrs = sessionRegistry.getAllSessions(
loginId, false);
if (sessions_arrs != null && sessions_arrs.length > 0) {
for (int i = 0; i < sessions_arrs.length; i++) {
sessions_arrs[i].expireNow();
// sessionRegistry.removeSessionInformation(sessions_arrs[i].getSessionId());
}
}
return RELOAD;
}
public String getLoginId() {
return loginId;
}
public void setLoginId(String loginId) {
this.loginId = loginId;
}
public ListgetLoginIds() {
return loginIds;
}
public void setLoginIds(ListloginIds) {
this.loginIds = loginIds;
}
public void setSessionRegistry(SessionRegistry sessionRegistry) {
this.sessionRegistry = sessionRegistry;
}
}
相关推荐
Spring Security提供了一种基于票证的并发控制,如果发现用户有新的登录尝试,会强制旧会话注销。 5. **权限控制** - Spring Security通过访问决策管理器(Access Decision Manager)和权限访问决策策略(Voter)...
本项目“spring-security-oauth2-authorization-server”将带你深入理解如何利用Spring Security OAuth2构建一个授权服务器,以保护你的API并提供安全的访问控制。 OAuth2是一种开放标准,用于授权第三方应用访问...
15-自定义配置-SpringSecurity的默认配置 16-自定义配置-添加用户功能的实现 17-自定义配置-添加用户功能的测试 18-自定义配置-密码加密算法 19-自定义配置-密码加密测试 20-自定义配置-DelegatingPasswordEncoder ...
Spring Security 是一个强大的Java安全框架,它为Web应用程序提供了全面的安全解决方案。在Spring Security中,密码的加密是非常关键的一部分,因为这直接关系到用户数据的安全性。本示例将介绍如何在Spring ...
Spring Boot简化了Spring应用的初始搭建以及开发过程,而Spring Security则提供了全面的安全管理解决方案,包括认证、授权等。在这个“springboot springsecurity动态权限控制”的主题中,我们将深入探讨如何在...
在Spring Security框架中,自定义过滤器是实现特定安全需求的一种常见方式。Spring Security的核心功能是通过一系列的Filter链来处理HTTP请求,这些Filter包括认证、授权等关键操作。本篇我们将深入探讨如何在Spring...
在你提到的"spring-security-3.0.5.RELEASE"版本中,我们将深入探讨该框架的关键概念和功能。 1. **用户认证**:Spring Security 提供了多种认证机制,包括基于内存的用户细节服务、数据库连接的用户细节服务,甚至...
本文将详细探讨SpringSecurity中关于自定义用户权限信息存取的实现方法,包括如何通过配置文件和数据库来管理用户的认证信息和权限数据。 首先,当我们谈论用户权限信息的存取,实际上是在处理两个方面的问题:用户...
在版本2.5时,Spring Security已经是一个成熟且功能丰富的安全框架,为开发者提供了一套强大的工具来管理用户的登录、权限控制以及会话管理。 在"spring security2.5 jar"中,包含了Spring Security框架的核心类和...
其次,Spring Security是Spring生态中的安全模块,它提供了一套全面的安全解决方案,包括认证、授权、会话管理等。开发者可以通过配置或编程的方式,利用Spring Security保护Web应用程序的各个层面,防止未授权访问...
在这个"spring-security-samples-contacts-2.0.4"示例中,我们聚焦于如何将Spring Security集成到一个联系人管理应用中,并针对MySQL数据库进行了适配。这个示例项目将帮助开发者了解如何在实际应用中配置和使用...
本资源“spring-security实现自定义登录认证.rar”包含了一个使用Spring Security进行登录认证的示例,以及JWT(JSON Web Tokens)与Spring Security集成的代码。 首先,让我们了解Spring Security的基本工作原理。...
1. **spring-security-oauth2-2.0.3.RELEASE-javadoc.jar**:这是文档JAR文件,包含Spring Security OAuth2的API文档。通过查看这些文档,开发者可以了解各个类、接口和方法的用途,以及如何在自己的项目中使用它们...
- `spring-security-web-4.0.0.CI-SNAPSHOT.jar`:处理HTTP请求的安全过滤器,如CSRF防护、登录、注销、会话管理等。 3. **spring-security-config**: - `spring-security-config-4.0.0.CI-SNAPSHOT-javadoc.jar...
Spring Security:spring家族一员。是一个能够为基于Spring的企业应用系统提供声明式的安全访问控制解决方案的安全框架。它提供了一组可以在Spring应用上下文中配置的Bean,充分利用了Spring IoC,DI(控制反转...
4. **spring-security-core-tiger-2.0.5.RELEASE-sources.jar**:这个jar包包含了Spring Security核心组件的源代码,对于开发者来说非常有用,因为它允许他们查看和理解框架内部的工作原理,便于调试和自定义扩展。...
- `spring-boot-starter-security`依赖:SpringBoot项目中添加此依赖即可自动配置SpringSecurity。 - 自定义登录页面:通过设置`loginPage`和`loginProcessingUrl`属性,可以指定自定义的登录页面和处理登录请求的...
这个“spring security权限管理开发手册及实例.rar”压缩包显然包含了关于如何使用Spring Security进行权限管理的详细指南和实际操作示例。让我们深入探讨一下Spring Security的核心概念、功能以及如何在实践中应用...
- `ACL-spring-security-acl.jar`:提供了基于 ACL 的访问控制功能。 - `CAS-spring-security-cas-client.jar`:支持 CAS 协议的单点登录功能。 - `OpenID-spring-security-openid.jar`:支持 OpenID 身份验证。 ...
首先,SpringSecurity的核心功能包括用户认证、权限授权、会话管理以及防止常见攻击。其中,用户认证涉及验证用户凭据,如用户名和密码,以确定用户的身份。而权限授权则决定了已认证的用户可以访问哪些资源或执行...