前不久有个需求,需要在后台查看所有已登录的用户,系统使用的是spring mvc3.1 + spring security 3.1+ jpa 2.0 。
按官方文档中的方式去获取已登录的用户一直返加为0,经无数次折腾,终于有了可行的方案。先看下java代码部份。
public String queryLoginUser(int start,int limit){ List<Object> slist =sessionRegistry.getAllPrincipals(); int totalCount=slist.size(); if(slist.size()==0){ return "{totalCount:" + totalCount + ",data:[]}"; } SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); List<Object> pageList=slist.subList(start,limit>slist.size()?slist.size():limit); StringBuffer retVal=new StringBuffer("["); int k=0; for(int i=0;i<pageList.size();i++){ List<SessionInformation> sessionList = sessionRegistry.getAllSessions(pageList.get(i),true); User user=(User)pageList.get(i); for(SessionInformation t:sessionList){ if(k!=0){ retVal.append(","); } retVal.append("{\"id\":\""+k+"\",\"userName\":\""+user.getUsername()+"\",\"sessionId\":\""+t.getSessionId()+"\",\"lastRequest\":\""+sdf.format(t.getLastRequest())+"\"}"); k=k+1; } } retVal.append("]"); return "{totalCount:" + totalCount + ",data:"+ retVal.toString() + "}"; }
该方法实现了对当前登录用户的分页查询,并返回Json数据格式。
以下是xml配置的关键部份
<beans:bean id="sessionRegistry" class="org.springframework.security.core.session.SessionRegistryImpl" />
<beans:bean id="sas" class="org.springframework.security.web.authentication.session.ConcurrentSessionControlStrategy"> <beans:constructor-arg name="sessionRegistry" ref="sessionRegistry" /> <beans:property name="maximumSessions" value="1" /> <beans:property name="exceptionIfMaximumExceeded" value="true" /> </beans:bean>
<!-- 登录验证器 --> <beans:bean id="loginFilter" class="com.verysoft.baseframework.security.MyUsernamePasswordAuthenticationFilter"> <beans:property name="sessionAuthenticationStrategy" ref="sas"/><!--此配置可实现获取所有登录用户信息 --> <beans:property name="filterProcessesUrl" value="/j_spring_security_check"></beans:property> <beans:property name="authenticationSuccessHandler" ref="loginLogAuthenticationSuccessHandler"></beans:property> <beans:property name="authenticationFailureHandler" ref="simpleUrlAuthenticationFailureHandler"></beans:property> <beans:property name="authenticationManager" ref="myAuthenticationManager"></beans:property> <beans:property name="userDao" ref="userDao"></beans:property> </beans:bean>
<http use-expressions="true" entry-point-ref="authenticationProcessingFilterEntryPoint"> <logout delete-cookies="JSESSIONID" invalidate-session="true" /> <!-- 实现免登陆验证 <remember-me /> --> <!-- <custom-filter ref="concurrencyFilter" position="CONCURRENT_SESSION_FILTER" /> --> <custom-filter ref="loginFilter" position="FORM_LOGIN_FILTER" /> <custom-filter ref="securityFilter" before="FILTER_SECURITY_INTERCEPTOR"/> <session-management session-fixation-protection="none" /> </http>
此方案经本人验证通过,配置文件在附件中,有其它问题可联系本人QQ:359709421
全部代码在云盘 http://yunpan.cn/csQyg47f3gBkX (提取码:35a9)
我的网店,有劳各位参观参观 http://mrs-x.taobao.com/
相关推荐
10. **国际化的错误消息**:Spring Security 3.1提供国际化支持,可以将错误消息翻译成多种语言,提高用户体验。 总的来说,Spring Security 3.1是一个强大且灵活的安全框架,对于Java开发者来说,理解和掌握其核心...
标题:springsecurity3.1.pdf 描述:springsecurity3.1.pdf 标签:spring security3.1 部分内容:SpringSecurity Reference Documentation by Ben Alex and Luke Taylor 3.1.4.RELEASE **一、Spring Security 3.1...
在Spring Security 3.1版本中,它提供了多种方式来管理用户认证和授权。本指南将深入讲解如何利用这个框架进行高级开发,通过一个简单的示例和一个复杂的示例来演示不同方法的实现。 首先,Spring Security 3.1的四...
《Spring Security 3.1 学习指南及资源解析》 Spring Security是Java平台上的一款强大且高度可定制的安全框架,广泛应用于企业级Web应用的安全管理。本篇文章将围绕"Spring Security 3.1"这一主题,深入探讨其核心...
《Spring Security 3.1 实现验证码自定义登录详解》 在现代Web应用程序的安全管理中,Spring Security是一个不可或缺的框架,它提供了强大的访问控制和身份验证功能。在本文中,我们将深入探讨如何在Spring ...
在Spring Security 3.1版本中,它提供了一套全面的安全解决方案,涵盖了从用户认证到权限控制等多个层面。本文将深入探讨Spring Security 3.1的核心概念、配置以及实际应用。 1. **核心概念** - **Authentication...
Spring Security 3.1也支持"记住我"功能,允许用户在一段时间内无须重新登录。这通过`RememberMeServices`接口实现,可以配置在`<http>`元素中。 7. **异常处理** 框架提供了一套标准的HTTP错误页面,例如403...
1. **支持最新的 Spring Framework 3.1**:Spring Security 3.1 完全兼容 Spring Framework 3.1,这意味着开发者可以利用 Spring 3.1 的所有新特性。 2. **增强的内存身份验证机制**:该版本引入了更加强大的内存...
总结,Spring Security 3.1提供了一套强大且灵活的安全解决方案,包括URL和方法拦截、用户数据的数据库存储,以及通过Maven进行依赖管理。通过学习和实践,我们可以有效地保护我们的Web应用程序。
6. **Remember-Me服务**:Spring Security提供了Remember-Me服务,允许用户在一段时间内无须再次登录,增强了用户体验。 7. **集成Spring MVC和Spring WebFlow**:Spring Security能够无缝集成到Spring MVC和Spring...
在Spring Security 3.1的背景下,Servlet用于接收用户请求,然后通过Spring的DispatcherServlet进行分发处理。Spring Security则在此过程中提供安全拦截,确保只有经过身份验证和授权的用户才能访问特定资源。 ...
在3.1版本中,Spring Security 进一步优化了其核心架构,提高了性能,并且增强了用户体验。 在"Spring Security3.1实例"中,我们主要关注以下几个核心知识点: 1. **认证**:Spring Security 提供了多种认证机制,...
- **社交网络平台**:通过 Spring Security 3.1 实现用户注册、登录、个人资料保护等功能,提高用户体验的同时保障数据安全。 - **电子商务网站**:利用 Spring Security 3.1 加强支付环节的安全性,防止恶意攻击,...
在压缩包内的文件,"spring security 3.1 电子书,源代码"表明用户将获得两部分内容:一是Spring Security 3.1的电子书,这是一份详尽的教程或参考指南,涵盖了框架的各个方面;二是源代码,这些代码可以直接查看和...
总之,SpringSecurity 3.1 提供了一套全面的安全解决方案,通过精心配置可以满足各种复杂的安全需求。理解其过滤器链的工作原理,以及如何在项目中正确配置和使用,是实现安全应用的关键。同时,随着版本的升级,...
### Spring Security 3.1 高级开发指南详解 #### 一、Spring Security 3.1 使用方法概述 Spring Security 是一个强大的、高度可定制的身份验证和访问控制框架。Spring Security 3.1 版本提供了多种不同的配置方式...
- 根据需求定制访问控制规则,定义哪些URL需要用户登录才能访问,哪些URL对所有用户开放。 Spring Security 3.1入门Demo将帮助你了解这些基本概念,并为你提供一个可运行的实例,便于实际操作和学习。通过分析和...
Spring Security 是一个强大的Java安全框架,它为Spring应用程序提供了全面的安全解决方案。该框架的主要目标是保护Web应用程序,包括身份验证、授权以及会话管理。在"Spring Security 3.1 随书源代码"中,我们可以...