`
kt431128
  • 浏览: 39854 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

springsecurity扩展自定义会话管理-提供管理员调用踢出用户

 
阅读更多

主要涉及的类如下:

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 3.x session-management 会话管理失效

    Spring Security提供了一种基于票证的并发控制,如果发现用户有新的登录尝试,会强制旧会话注销。 5. **权限控制** - Spring Security通过访问决策管理器(Access Decision Manager)和权限访问决策策略(Voter)...

    spring-security-oauth2-authorization-server.zip

    本项目“spring-security-oauth2-authorization-server”将带你深入理解如何利用Spring Security OAuth2构建一个授权服务器,以保护你的API并提供安全的访问控制。 OAuth2是一种开放标准,用于授权第三方应用访问...

    SpringSecurity和OAuth2实战精讲视频.zip

    15-自定义配置-SpringSecurity的默认配置 16-自定义配置-添加用户功能的实现 17-自定义配置-添加用户功能的测试 18-自定义配置-密码加密算法 19-自定义配置-密码加密测试 20-自定义配置-DelegatingPasswordEncoder ...

    Spring security 自定义密码加密方式的使用范例。

    Spring Security 是一个强大的Java安全框架,它为Web应用程序提供了全面的安全解决方案。在Spring Security中,密码的加密是非常关键的一部分,因为这直接关系到用户数据的安全性。本示例将介绍如何在Spring ...

    springboot springsecurity动态权限控制

    Spring Boot简化了Spring应用的初始搭建以及开发过程,而Spring Security则提供了全面的安全管理解决方案,包括认证、授权等。在这个“springboot springsecurity动态权限控制”的主题中,我们将深入探讨如何在...

    springsecurity2 自定义filter实现

    在Spring Security框架中,自定义过滤器是实现特定安全需求的一种常见方式。Spring Security的核心功能是通过一系列的Filter链来处理HTTP请求,这些Filter包括认证、授权等关键操作。本篇我们将深入探讨如何在Spring...

    spring-security Jar包

    在你提到的"spring-security-3.0.5.RELEASE"版本中,我们将深入探讨该框架的关键概念和功能。 1. **用户认证**:Spring Security 提供了多种认证机制,包括基于内存的用户细节服务、数据库连接的用户细节服务,甚至...

    SpringSecurity 之自定义用户权限信息的存取

    本文将详细探讨SpringSecurity中关于自定义用户权限信息存取的实现方法,包括如何通过配置文件和数据库来管理用户的认证信息和权限数据。 首先,当我们谈论用户权限信息的存取,实际上是在处理两个方面的问题:用户...

    spring spring security2.5 jar

    在版本2.5时,Spring Security已经是一个成熟且功能丰富的安全框架,为开发者提供了一套强大的工具来管理用户的登录、权限控制以及会话管理。 在"spring security2.5 jar"中,包含了Spring Security框架的核心类和...

    spring mvc 和spring security自定义登录

    其次,Spring Security是Spring生态中的安全模块,它提供了一套全面的安全解决方案,包括认证、授权、会话管理等。开发者可以通过配置或编程的方式,利用Spring Security保护Web应用程序的各个层面,防止未授权访问...

    spring-security-samples-contacts-2.0.4

    在这个"spring-security-samples-contacts-2.0.4"示例中,我们聚焦于如何将Spring Security集成到一个联系人管理应用中,并针对MySQL数据库进行了适配。这个示例项目将帮助开发者了解如何在实际应用中配置和使用...

    spring-security实现自定义登录认证.rar

    本资源“spring-security实现自定义登录认证.rar”包含了一个使用Spring Security进行登录认证的示例,以及JWT(JSON Web Tokens)与Spring Security集成的代码。 首先,让我们了解Spring Security的基本工作原理。...

    spring-security-oauth2-2.0.3.jar(包括jar包,源码,doc)

    1. **spring-security-oauth2-2.0.3.RELEASE-javadoc.jar**:这是文档JAR文件,包含Spring Security OAuth2的API文档。通过查看这些文档,开发者可以了解各个类、接口和方法的用途,以及如何在自己的项目中使用它们...

    spring security 4.0.0所需jar包

    - `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...

    SpringSecurity.zip

    ​ Spring Security:spring家族一员。是一个能够为基于Spring的企业应用系统提供声明式的安全访问控制解决方案的安全框架。它提供了一组可以在Spring应用上下文中配置的Bean,充分利用了Spring IoC,DI(控制反转...

    spring-security所需要的jar包,

    4. **spring-security-core-tiger-2.0.5.RELEASE-sources.jar**:这个jar包包含了Spring Security核心组件的源代码,对于开发者来说非常有用,因为它允许他们查看和理解框架内部的工作原理,便于调试和自定义扩展。...

    SpringSecurity笔记,编程不良人笔记

    - `spring-boot-starter-security`依赖:SpringBoot项目中添加此依赖即可自动配置SpringSecurity。 - 自定义登录页面:通过设置`loginPage`和`loginProcessingUrl`属性,可以指定自定义的登录页面和处理登录请求的...

    spring security权限管理开发手册及实例.rar

    这个“spring security权限管理开发手册及实例.rar”压缩包显然包含了关于如何使用Spring Security进行权限管理的详细指南和实际操作示例。让我们深入探讨一下Spring Security的核心概念、功能以及如何在实践中应用...

    spring security3 中文版本

    - `ACL-spring-security-acl.jar`:提供了基于 ACL 的访问控制功能。 - `CAS-spring-security-cas-client.jar`:支持 CAS 协议的单点登录功能。 - `OpenID-spring-security-openid.jar`:支持 OpenID 身份验证。 ...

    SpringSecurity学习总结源代码

    首先,SpringSecurity的核心功能包括用户认证、权限授权、会话管理以及防止常见攻击。其中,用户认证涉及验证用户凭据,如用户名和密码,以确定用户的身份。而权限授权则决定了已认证的用户可以访问哪些资源或执行...

Global site tag (gtag.js) - Google Analytics