`
longstudio
  • 浏览: 31275 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

Spring Security 检查会话是否存在

阅读更多

        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学习笔记

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

    SpringSecurity.pdf

    在用户、角色、权限、菜单之间,存在复杂的多对多关系,因此Spring Security需要相应的数据模型来支持这些关系,这通常涉及用户表、角色表、权限表、菜单表、以及它们之间的关联表。 Spring Security架构中的角色表...

    spring security 完整项目实例

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

    Spring Cloud Gateway 整合 Spring Security 统一登录认证鉴权

    5. **测试和调试**:在集成测试中,模拟不同场景下的用户行为,检查认证和鉴权逻辑是否正确。这包括无权限访问、过期token、无效token等情况的处理。 6. **监控和日志**:为了保证系统的健壮性,应设置合适的监控和...

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

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

    SpringSecurity学习总结源代码

    1. **Filter Security Interceptor**:这是SpringSecurity的主要过滤器,负责检查请求并决定是否允许访问。它会根据预定义的访问控制规则进行判断。 2. **Authentication Manager**:处理用户认证的组件,可以使用...

    spring spring security2.5 jar

    4. **会话管理**:Spring Security提供了会话管理功能,可以防止会话固定攻击(Session Fixation)、实现会话超时以及单点登录(Single Sign-On, SSO)。 5. **异常处理**:当安全规则不满足时,Spring Security会...

    spring security3 中文版本

    Spring Security 3.0.1 是在 Spring Security 3.0 的基础上进行的一次 bug 修复版本,主要针对先前版本中存在的问题进行了修正。此次版本未引入新的功能,但修正了一些已知的问题,增强了稳定性。 ##### 1.4 获取 ...

    spring_security_3.1

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

    spring-security 官方文档 中文版

    本文档所指的版本为 Spring Security 3.0.1,这是一个 bug fix 版本,主要针对 3.0 版本中存在的问题进行修复,确保开发者能够获取更稳定可靠的 Spring Security 库。 **1.4 获取 Spring Security** - **项目模块*...

    spring security 4.0.0所需jar包

    在Spring Security 4.0.0中,这些jar包一起工作,提供了一套完整的解决方案,用于实现用户认证(验证用户身份)和授权(决定用户是否允许访问特定资源)。例如,`spring-security-core`负责基本的认证和授权逻辑,`...

    SpringSecurity笔记,编程不良人笔记

    SpringSecurity是Java领域中一款强大的安全框架,主要用于Web应用程序的安全管理。它提供了全面的身份验证、授权、会话管理以及安全相关的功能,可以帮助开发者构建安全的Web应用。在本笔记中,我们将深入探讨Spring...

    Spring Security-3中文官方文档(及教程)

    4. **会话管理**:Spring Security可以实现会话固定保护,防止会话劫持和会话超时策略。同时,它还可以控制并发会话,防止同一用户同时登录多个设备。 5. **CSRF防护**:为了防止跨站请求伪造攻击,Spring Security...

    spring-security所需要的jar包,

    在使用这些库时,开发者需要确保他们的项目配置正确,包括Spring Security的配置文件(如 applicationContext-security.xml),以及对所需安全功能的定制,例如登录页面、权限控制、会话管理等。同时,源代码和测试...

    精彩:Spring Security 演讲PPT

    ### Spring Security 概述与应用实践 #### 一、引言 在当今互联网时代,网络安全问题日益凸显,尤其是Web应用程序的安全性受到了前所未有的关注。为了应对这些挑战,Spring Security 应运而生,成为了一个非常重要...

    Spring security认证授权

    - **访问决策管理器**:Spring Security使用`AccessDecisionManager`来决定用户是否可以访问某个资源。默认使用投票机制,根据用户的权限角色来决定。 - **访问控制表达式**:你可以使用`@PreAuthorize`和`@...

    SpringSecurity源码

    SpringSecurity是Java领域中一款强大的安全框架,专为Spring应用设计,提供了全面的安全管理解决方案,包括身份验证、授权、会话管理以及CSRF防护等。本教程配套源码旨在帮助开发者深入理解SpringSecurity的工作原理...

    SpringSecurity中文文档.zip

    此外,SpringSecurity还提供了会话管理功能,包括会话固定保护(Session Fixation Protection)和会话超时(Session Timeout)等,以防止会话劫持和会话固定攻击。它还集成了Remember Me服务,允许用户在一定时间内...

    使用Spring Security控制会话的方法

    使用 Spring Security 控制会话的方法 Spring Security 是一个功能强大且灵活的身份验证和授权框架,它提供了多种方式来控制 HTTP 会话。本文将详细介绍如何使用 Spring Security 控制会话,包括会话的创建、管理和...

    spring-security Jar包

    4. **会话管理**:Spring Security 可以帮助管理用户的会话,防止会话劫持和固定会话ID攻击。它能配置会话超时、会话固定策略,并且支持跨站请求伪造(CSRF)防护。 5. **访问控制表达式(ACE)**:Spring Security...

Global site tag (gtag.js) - Google Analytics