WEB前端主框架(基于AJAX)按F5或者Ctrl+F5进行刷新时,框架就会自动跳转到登录首页,而不管当前用户是否已经登录过而且会话实际没有失效,带来的用户体验不是很好,为了解决这个问题,我采用的方案是在WEB主框架初始化时最开始调用一个RequestSession的请求,后台判断是否存在会话,存在则将会话信息直接返回,不存在再进入登录首页,这样不管何时进行刷新,都是执行这个判断逻辑,保证在会话信息没有失效前刷新页面都是不用再次登录的。后台判断会话信息是否存在也比较简单,控制层采用Struts2,安全框架采用Spring Security,只需判断当前HTTP请求会话中是否包含SPRING_SECURITY_CONTEXT为Key值的属性,这是Spring Security在登录校验成功后自动创建的。
核心代码如下:
ActionContext ctx = ActionContext.getContext(); HttpServletRequest request = (HttpServletRequest) ctx .get(ServletActionContext.HTTP_REQUEST); SecurityContextImpl securityContextImpl = (SecurityContextImpl) request .getSession().getAttribute("SPRING_SECURITY_CONTEXT"); if (null != securityContextImpl && null != securityContextImpl.getAuthentication()) { User userDetails = (User) securityContextImpl.getAuthentication() .getPrincipal(); //do something }
别忘了,需要在Spring Security配置中把该请求URL的权限放开,applicationContext-security.xml中添加如下内容:
<http pattern="/**/request_session" security="none" />
相关推荐
在"springsecurity学习笔记"中,你可能会涉及以下主题: - Spring Security的基本配置,包括web安全配置和全局安全配置。 - 如何自定义认证和授权流程,比如实现自定义的AuthenticationProvider和...
在用户、角色、权限、菜单之间,存在复杂的多对多关系,因此Spring Security需要相应的数据模型来支持这些关系,这通常涉及用户表、角色表、权限表、菜单表、以及它们之间的关联表。 Spring Security架构中的角色表...
总之,这个"spring security 完整项目实例"涵盖了Spring Security的核心组件和用法,包括用户管理、身份验证、权限控制、会话管理等多个方面。通过学习和实践这个项目,开发者能够深入理解Spring Security的工作原理...
5. **测试和调试**:在集成测试中,模拟不同场景下的用户行为,检查认证和鉴权逻辑是否正确。这包括无权限访问、过期token、无效token等情况的处理。 6. **监控和日志**:为了保证系统的健壮性,应设置合适的监控和...
会话管理:Spring Security支持对用户会话状态的管理,包括会话超时、并发控制、集群环境下的分布式会话管理等。 Web集成:Spring Security能够无缝集成到Spring框架和Spring MVC中,提供了过滤器、标签库等工具,...
1. **Filter Security Interceptor**:这是SpringSecurity的主要过滤器,负责检查请求并决定是否允许访问。它会根据预定义的访问控制规则进行判断。 2. **Authentication Manager**:处理用户认证的组件,可以使用...
4. **会话管理**:Spring Security提供了会话管理功能,可以防止会话固定攻击(Session Fixation)、实现会话超时以及单点登录(Single Sign-On, SSO)。 5. **异常处理**:当安全规则不满足时,Spring Security会...
Spring Security 3.0.1 是在 Spring Security 3.0 的基础上进行的一次 bug 修复版本,主要针对先前版本中存在的问题进行了修正。此次版本未引入新的功能,但修正了一些已知的问题,增强了稳定性。 ##### 1.4 获取 ...
4. **会话管理(Session Management)**:Spring Security提供了强大的会话管理功能,可以限制同一用户同时在线的数量,检测会话劫持和会话固定攻击,并能实现会话超时策略。 5. **CSRF保护(Cross-Site Request ...
4. **会话管理**:Spring Security提供了会话管理功能,如会话固定保护、会话超时和并发会话控制。这在防止会话劫持和会话固定攻击方面至关重要。 5. **CSRF(跨站请求伪造)防护**:Spring Security 3.1默认提供了...
SpringSecurity是Java领域中一款强大的安全框架,主要用于Web应用程序的安全管理。它提供了全面的身份验证、授权、会话管理以及安全相关的功能,可以帮助开发者构建安全的Web应用。在本笔记中,我们将深入探讨Spring...
本文档所指的版本为 Spring Security 3.0.1,这是一个 bug fix 版本,主要针对 3.0 版本中存在的问题进行修复,确保开发者能够获取更稳定可靠的 Spring Security 库。 **1.4 获取 Spring Security** - **项目模块*...
在Spring Security 4.0.0中,这些jar包一起工作,提供了一套完整的解决方案,用于实现用户认证(验证用户身份)和授权(决定用户是否允许访问特定资源)。例如,`spring-security-core`负责基本的认证和授权逻辑,`...
4. **会话管理**:Spring Security可以实现会话固定保护,防止会话劫持和会话超时策略。同时,它还可以控制并发会话,防止同一用户同时登录多个设备。 5. **CSRF防护**:为了防止跨站请求伪造攻击,Spring Security...
### Spring Security 概述与应用实践 #### 一、引言 在当今互联网时代,网络安全问题日益凸显,尤其是Web应用程序的安全性受到了前所未有的关注。为了应对这些挑战,Spring Security 应运而生,成为了一个非常重要...
在使用这些库时,开发者需要确保他们的项目配置正确,包括Spring Security的配置文件(如 applicationContext-security.xml),以及对所需安全功能的定制,例如登录页面、权限控制、会话管理等。同时,源代码和测试...
- **访问决策管理器**:Spring Security使用`AccessDecisionManager`来决定用户是否可以访问某个资源。默认使用投票机制,根据用户的权限角色来决定。 - **访问控制表达式**:你可以使用`@PreAuthorize`和`@...
SpringSecurity是Java领域中一款强大的安全框架,专为Spring应用设计,提供了全面的安全管理解决方案,包括身份验证、授权、会话管理以及CSRF防护等。本教程配套源码旨在帮助开发者深入理解SpringSecurity的工作原理...
此外,SpringSecurity还提供了会话管理功能,包括会话固定保护(Session Fixation Protection)和会话超时(Session Timeout)等,以防止会话劫持和会话固定攻击。它还集成了Remember Me服务,允许用户在一定时间内...
使用 Spring Security 控制会话的方法 Spring Security 是一个功能强大且灵活的身份验证和授权框架,它提供了多种方式来控制 HTTP 会话。本文将详细介绍如何使用 Spring Security 控制会话,包括会话的创建、管理和...