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;
}
}
分享到:
相关推荐
SpringSecurity 之自定义用户权限信息的存取,SpringSecurity教程,用户权限信息存取
Spring security的完整使用范例,支持自定义密码的加密方式,以及成功,失败的处理。是一个完整可运行的工程,码云似乎还要注册。后期考虑下用码云
springsecuritytest自定义权限成功实例.rar 每个类都有相应的详细的介绍,看懂不难,当前前提还是需要对Springsecurity有些了解,自定义权限拦截器;认证管理器;用户详细信息;资源访问管理;用户信息查询等类;
使用spring mvc 和spring security 完成简单的自定义登录
springsecurity(用spring ibatis freemaker)实现的用户自定义的权限管理页面, 里头包括数据库脚本 和原数据 和原代码 主要参考http://blog.csdn.net/k10509806/article/details/6369131 这个人的文章做的
实现会话控制,权限控制,免登陆的spring security完整项目 博文链接:https://abc08010051.iteye.com/blog/1995886
NULL 博文链接:https://jiawu.iteye.com/blog/400351
spring security 4 小例子带自定义过滤器
springboot集成spring-security,实现自定义登录认证,代码亲测,同时附带jwt+security集成的代码,亲测可用
SpringSecurity4.2 自定义登陆页面实现,登陆验证码实现,源码
Spring-Security3.0自定义表结构
1、搭建基本的Spring Security项目 2、使用数据库管理用户权限 3、自定义认证数据库表结构 4、自定义登录页面 5、使用数据库管理资源 6、控制用户信息 MD5加密 获取当前用户信息 7、自定义访问拒绝页面 8、动态...
Spring Security 演讲PPT(演讲嘉宾:张明星) WebSphere技术专家沙龙在广州圆满举办,WSC超级版主Fastzch(张明星)担任本次沙龙的演讲嘉宾,他给广州的WebSphere技术专家带来了以“Spring Security ”为主题的...
会话管理:Spring Security支持对用户会话状态的管理,包括会话超时、并发控制、集群环境下的分布式会话管理等。 Web集成:Spring Security能够无缝集成到Spring框架和Spring MVC中,提供了过滤器、标签库等工具,...
Spring Security:spring家族一员。是一个能够为基于Spring的企业应用系统提供声明式的安全访问控制解决方案的安全框架。它提供了一组可以在Spring应用上下文中配置的Bean,充分利用了Spring IoC,DI(控制反转...
Spring Security OAuth2.0学习笔记 什么是认证、授权、会话。 Java Servlet为支持http会话做了哪些事儿。 基于session认证机制的运作流程。 基于token认证机制的运作流程。 理解Spring Security的工作原理,Spring ...
springsecurity是一个专注于为Java应用程序提供身份验证和授权的框架。与所有Spring项目一样,Spring安全性的真正威力在于它可以很容易地扩展以满足定制需求。 spring security 的核心功能主要包括: 认证 (你是...
Spring Security三份资料,实战Spring Security 3.x.pdf;Spring Security 3.pdf;Spring Security使用手册.pdf
ssecurity项目是Spring Security实战(一和二)的源码; ssecurity-db项目是Spring Security实战(三)的源码; ssceurity-page项目是Spring Security实战(四)的源码; ssecurity-pageClass项目是Spring Security...
spring mvc + spring security + 自定义form表单+验证码+bootstrap