`
Wind_ZhongGang
  • 浏览: 263765 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

Spring Security 3多用户登录实现之八 基于Cookie的自动登录

 
阅读更多

    Spring Security为我们提供了两种方式的自动登录,一种是基于Cookie的自动登录,想实现这种自动登录功能,需要使用TokenBasedRememberMeServices类,如果想扩展自己的特殊登录,可以继承该类;一种是基于持久化存储的自动登录,需要使用PersistentTokenBasedRememberMeServices类,两者都继承了抽象类AbstractRememberMeServices,实现了RememberMeServices接口,查看RememberMeServices源代码可以发现,该接口提供了三个方法,autoLogin方法是实现自动登录功能的,loginSuccess是当第一次登录成功时,记录用户相关凭证及自动登录相关设置到Cookie或持久化存储当中的,loginFailure是当我们密码修改或Cookie过期等进行自动登录时,导致登录失败调用的,主要作用是删除相关Cookie或持久化信息的。当我们访问一个未登录却需要登录验证的资源时,RememberMeAuthenticationFilter过滤器会调用这个方法,并通过Cookie或持久化存储得到用户凭证相关信息,并通过特有的RememberMeAuthenticationToken和RememberMeAuthenticationProvider来实现类似之前的用户自己登录的流程。

 

    这里来看看如何实现基于Cookie的自动登录。

 

    1.启用RememberService服务

 <remember-me services-ref="rememberMeServices" key="ZhongGang"/>

 

    2.配置自动登录凭证存储方式

 

    <beans:bean id="rememberMeServices"
                class="org.springframework.security.web.authentication.rememberme.TokenBasedRememberMeServices">
        <beans:property name="key" value="ZhongGang"/>
        <!--<beans:property name="alwaysRemember" value="true"/>-->
        <beans:property name="parameter" value="rememberMe"/>
        <beans:property name="tokenValiditySeconds" value="604800"/>
        <beans:property name="userDetailsService" ref="userService"/>
    </beans:bean>

 

    最后需要在拦截登录表单的过滤器,也就是继承或实现了AbstractAuthenticationProcessingFilter类中配置上这个rememberMeServices

 

 

    <beans:bean id="multipleAuthenticationProcessingFilter"
                class="com.template.security.filter.MultipleAuthenticationProcessingFilter">
        <beans:constructor-arg value="/login/check"/>
        <beans:property name="tokenResolvers">
            <beans:list>
                <beans:ref bean="backendAuthenticationTokenResolver"/>
                <beans:ref bean="forendAuthenticationTokenResolver"/>
            </beans:list>
        </beans:property>
        <beans:property name="authenticationManager" ref="authenticationManager"/>
        <beans:property name="authenticationSuccessHandler" ref="multipleAuthenticationSuccessHandler"/>
        <beans:property name="authenticationFailureHandler" ref="multipleAuthenticationFailureHandler"/>
        <beans:property name="rememberMeServices" ref="rememberMeServices"/>
    </beans:bean>
 
3
1
分享到:
评论
4 楼 xumin_wlt 2012-11-17  
Wind_ZhongGang 写道
xumin_wlt 写道
今天再来发现楼主的博客又更新了,看了你的文章再去看别人写的SpringSecurity容易理解多了,但是还是少了2点,过滤器里面有3个manage,这里讲了一个,加起来就完美些了。


不知道你说的3个manage是什么意思?
谢谢你的支持 共同进步



http://www.blogjava.net/fastzch/archive/2010/03/10/315028.html


    <!-- 一个自定义的filter,必须包含authenticationManager,accessDecisionManager,securityMetadataSource三个属性,
    我们的所有控制将在这三个类中实现,解释详见具体配置 -->
    <beans:bean id="myFilter" class="com.robin.erp.fwk.security.MyFilterSecurityInterceptor">
        <beans:property name="authenticationManager"
            ref="authenticationManager" />
        <beans:property name="accessDecisionManager"
            ref="myAccessDecisionManagerBean" />
        <beans:property name="securityMetadataSource"
            ref="securityMetadataSource" />
    </beans:bean>
3 楼 Wind_ZhongGang 2012-11-17  
xumin_wlt 写道
今天再来发现楼主的博客又更新了,看了你的文章再去看别人写的SpringSecurity容易理解多了,但是还是少了2点,过滤器里面有3个manage,这里讲了一个,加起来就完美些了。


不知道你说的3个manage是什么意思?
谢谢你的支持 共同进步
2 楼 xumin_wlt 2012-11-16  
期待下一个基于持久层设计的remember me功能,谢谢。
1 楼 xumin_wlt 2012-11-16  
今天再来发现楼主的博客又更新了,看了你的文章再去看别人写的SpringSecurity容易理解多了,但是还是少了2点,过滤器里面有3个manage,这里讲了一个,加起来就完美些了。

相关推荐

    Spring Security 3多用户登录实现之九 基于持久化存储的自动登录

    在“Spring Security 3多用户登录实现之九 基于持久化存储的自动登录”这一主题中,我们将探讨如何利用Spring Security来实现多用户登录系统,并通过持久化存储来支持用户的自动登录功能。在这个过程中,我们会涉及...

    Spring Security 3多用户登录实现之十一 退出

    以下是一些关于实现Spring Security多用户登录退出功能的关键知识点: 1. **配置注销URL**: 在Spring Security的配置中,你需要定义一个注销URL,如`/logout`。例如,在XML配置中,你可以使用`&lt;http&gt;`元素的`...

    spring security 完整项目实例

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

    Spring Security3

    ### Spring Security3 相关知识点概述 #### 第一章:一个不安全应用的剖析 **安全审计** - **目的**:识别系统中的安全隐患,并评估安全措施的有效性。 - **过程**:通过模拟攻击来测试系统的安全性,分析日志记录...

    spring-security使用数据库用户认证

    登录成功后,Spring Security会自动处理用户的会话和认证信息。注销功能可以通过调用`SecurityContextHolder.clearContext()`来实现。 7. **异常处理** 对于认证和授权失败的情况,Spring Security会抛出相应的...

    Spring Security3.1实践

    - **Remember Me服务**:实现自动登录功能,通过设置cookie存储用户的登录状态。 - **CSRF防护**:防止跨站请求伪造攻击,Spring Security 3.1默认开启CSRF保护。 - **国际化支持**:Spring Security支持多语言...

    spring-security 案例

    在这个“spring-security”案例中,我们将深入探讨Spring Security如何实现权限管理和登录权限。 1. **Spring Security基本概念** - **身份验证(Authentication)**:确认用户身份的过程,通常涉及用户名和密码。...

    Spring security实现记住我下次自动登录功能过程详解

    Spring Security 实现记住我下次自动登录功能过程详解 Spring Security 是一个功能强大且广泛使用的 Java 认证和授权框架,提供了许多功能强大的功能,例如认证、授权、RememberMe 等。在本文中,我们将详细介绍...

    Spring_Security3_源码分析

    本文将深入剖析Spring Security 3的核心概念、架构以及源码实现,帮助读者理解其工作原理,提升在实际开发中的应用能力。 一、Spring Security概述 1.1 框架目标 Spring Security旨在为Java应用提供全面的安全管理...

    spring-security源代码

    Spring Security提供Remember Me服务,可以让用户在一段时间内免登录访问,通过在cookie中存储安全的凭据实现。 5. **CSRF防护**: 默认情况下,Spring Security开启CSRF防护,通过生成并验证CSRF令牌,防止跨站...

    Spring Security3技术手册

    - 实现基于Cookie的自动登录策略。 - **示例代码**: 在`spring-security.xml`中配置持久化策略。 **17. 匿名登录** - **17.1 配置文件** - 在配置文件中启用匿名登录功能。 - **示例代码**: 在`spring-...

    SpringSecurity素材.zip

    SpringSecurity是Java领域中一款强大的安全框架,专为Web应用程序设计,用于实现身份验证和授权。这个名为"SpringSecurity素材.zip"的压缩包文件很可能包含了关于如何使用SpringSecurity进行安全控制的各种资料。...

    spring Security 2.0.4中文菜鸟实例教材

    它通过存储在cookie中的特殊令牌实现,当用户下次访问时,系统会自动恢复其认证状态。 6. **异常处理**:Spring Security提供了处理安全异常的机制,如未授权(UnauthorizedException)或未认证...

    spring security 数据库存储资源信息 记住我 支持AJAX

    在提供的压缩包文件"springsecurity_database"中,可能包含了示例代码、配置文件和其他相关资源,可以帮助你理解和实现上述功能。在实际项目中,你需要根据自己的需求调整和扩展这些示例,以构建一个符合业务场景的...

    springsecurity框架

    8. **国际化支持**:SpringSecurity提供多语言支持,可以根据用户设置显示相应的错误消息和提示信息。 9. **自定义配置**:SpringSecurity可以通过XML配置或Java配置进行高度定制,开发者可以根据实际需求调整安全...

    Spring Security学习之rememberMe自动登录的实现

    Spring Security的`rememberMe`功能通过使用持久化令牌方案,实现了安全的自动登录,保护了用户的登录状态,同时也防止了多设备同时登录的问题。理解和配置这一功能对于提升应用的安全性和用户体验至关重要。正确...

    springsecurity.pdf

    通过Acegi Security,开发者可以轻松地实现基于角色的安全性,确保只有经过验证的用户才能访问特定资源。 ##### 1.2 历史背景 Acegi Security最初由Ben Alex开发,并在Spring框架社区内得到了广泛的采纳和支持。...

    springsecurity3 学习笔记源码分析所得

    Spring Security通过存储特定的cookie来实现Remember Me功能,确保安全性和便利性。 7. **Exception Translation**: Spring Security将安全相关的异常转换为HTTP响应状态,如401未经授权和403禁止访问。这使得前端...

    Spring Security学习总结

    Spring Security的Remember Me服务通过在用户登录时创建一个长期的凭据,并将其存储在用户的Cookie中,以便在后续的无状态请求中自动重新认证用户。 7. **CSRF防护**:为了防止跨站请求伪造,Spring Security提供了...

Global site tag (gtag.js) - Google Analytics