`

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

阅读更多

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

配置文件基本上和(一)比没有做什么修改,只是不限制用户用同一账号登陆,所以配置maximumSessions为-1 
<beans:bean id="currentController" 
class="org.springframework.security.concurrent.ConcurrentSessionControllerImpl"> 
<beans:property name="sessionRegistry" ref="sessionRegistry" /> 
<beans:property name="exceptionIfMaximumExceeded" 
   value="false" /> 
<beans:property name="maximumSessions" value="-1"/> 
</beans:bean> 

其实要实现列表当前登陆的用户,并踢出用户,就是调用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; 
List<String> loginIds; 
           //默认方法 
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<String>(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 List<String> getLoginIds() { 
   return loginIds; 

public void setLoginIds(List<String> loginIds) { 
   this.loginIds = loginIds; 

public void setSessionRegistry(SessionRegistry sessionRegistry) { 
   this.sessionRegistry = sessionRegistry; 

分享到:
评论

相关推荐

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

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

    springsecurity2 自定义filter实现

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

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

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

    spring mvc 和spring security自定义登录

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

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

    Spring Security 是一个强大的安全框架,广泛用于Java Web应用的安全管理,包括身份验证、授权和访问控制。在Spring Boot中,Spring Security提供了开箱即用的功能,使得开发者可以快速地为应用添加安全特性。本资源...

    (源码)基于Spring Boot和Spring Security的分布式会话管理系统.zip

    # 基于Spring Boot和Spring Security的分布式会话管理系统 ## 项目简介 本项目是一个基于Spring Boot和Spring Security框架的分布式会话管理系统。它利用Redis集群来共享HTTP会话,支持单点登录(SSO)和资源...

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

    - **Remember Me**:提供持久化的会话,使用户在一段时间内无需重新登录。 - **OAuth2支持**:集成了OAuth2协议,可用于第三方应用的授权。 - **国际化的错误处理**:提供自定义的错误页面和消息支持。 - **可...

    springsecuritytest自定义权限成功实例.rar

    springsecuritytest自定义权限成功实例.rar 每个类都有相应的详细的介绍,看懂不难,当前前提还是需要对Springsecurity有些了解,自定义权限拦截器;认证管理器;用户详细信息;资源访问管理;用户信息查询等类;

    spring security 4 小例子带自定义过滤器

    在Spring Security 4中,我们可以通过自定义过滤器来扩展其功能,以满足特定的安全需求。在这个小例子中,我们将探讨如何创建并集成自定义过滤器,以及它在Spring Security中的工作原理。 首先,我们需要理解Spring...

    Spring-Security3.0自定义表结构

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

    springsecurity(用spring ibatis freemaker 用户自定义)实现的权限管理页面

    springsecurity(用spring ibatis freemaker)实现的用户自定义的权限管理页面, 里头包括数据库脚本 和原数据 和原代码 主要参考http://blog.csdn.net/k10509806/article/details/6369131 这个人的文章做的

    SpringSecurity笔记,编程不良人笔记

    在`SpringSecurity.md`和`SpringSecurity.pdf`文档中,可能包含SpringSecurity配置、自定义用户服务、授权策略等方面的代码示例。`codes`目录可能包含实际运行的项目代码,方便读者实践和理解。 8. **图笔记.draw...

    springboot springsecurity动态权限控制

    在这个“springboot springsecurity动态权限控制”的主题中,我们将深入探讨如何在Spring Boot项目中集成Spring Security,实现动态权限控制,让菜单权限的管理更加灵活和高效。 首先,我们需要理解Spring Security...

    最详细Spring Security学习资料(源码)

    会话管理:Spring Security支持对用户会话状态的管理,包括会话超时、并发控制、集群环境下的分布式会话管理等。 Web集成:Spring Security能够无缝集成到Spring框架和Spring MVC中,提供了过滤器、标签库等工具,...

    spring security 3.x session-management 会话管理失效

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

    spring security 完整项目实例

    总之,这个"spring security 完整项目实例"涵盖了Spring Security的核心组件和用法,包括用户管理、身份验证、权限控制、会话管理等多个方面。通过学习和实践这个项目,开发者能够深入理解Spring Security的工作原理...

    springsecurity学习笔记

    在"springsecurity学习笔记"中,你可能会涉及以下主题: - Spring Security的基本配置,包括web安全配置和全局安全配置。 - 如何自定义认证和授权流程,比如实现自定义的AuthenticationProvider和...

    spring security 官方文档

    4. **会话管理(Session Management)**:Spring Security提供了强大的会话管理功能,可以限制同一用户同时在线的数量,检测会话劫持和会话固定攻击,并能实现会话超时策略。 5. **CSRF保护(Cross-Site Request ...

    spring security进级篇 V 自定义标签控制显示

    这篇"Spring Security进阶篇 V 自定义标签控制显示"的博客文章显然深入探讨了如何在Spring Security中实现自定义的安全控制,以便更好地管理和展示应用内容。在本文中,我们将详细解析这个主题,并与"JSP自定义标签...

    spring_security_3.1

    4. **会话管理**:Spring Security提供了会话管理功能,如会话固定保护、会话超时和并发会话控制。这在防止会话劫持和会话固定攻击方面至关重要。 5. **CSRF(跨站请求伪造)防护**:Spring Security 3.1默认提供了...

Global site tag (gtag.js) - Google Analytics