`
确实比较男
  • 浏览: 115610 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

spring-security实现Remember-Me

阅读更多


 

RememberMeServices

public interface RememberMeServices { 
    //当用用户进行到系统未登录是自动登录
    Authentication autoLogin(HttpServletRequest request, HttpServletResponse response);
    //在用户登录失败的时候调用
    void loginFail(HttpServletRequest request, HttpServletResponse response);
    //在用户登录成功后调用
    void loginSuccess(HttpServletRequest request, HttpServletResponse response, Authentication successfulAuthentication);
}

AbstractRememberMeServices

1. loginSuccess : 在玩家登录成功后调用这个方法,首先通过rememberMeRequested这个方法判断是否需要rememberMe,若需要,那么调用抽象方法onLoginSuccess 

2.  loginFail : 在玩家登录失败后调用方法,首先执行cancelCookie删除cookie;然后执行方法onLoginFail

3. autoLogin : 首先从cookie中获取到加密后的字符串,然后解析这个加密字符串,调用抽象方法processAutoLoginCookie执行自动登录,最后返回一个完整的Authentication

 

TokenBasedRememberMeServices

1. onLoginSuccess : 完成加密 MD5 ("username:tokenExpiryTime:password:key"),设置加密字符串到cookie(详细加密查询makeTokenSignature方法)

2. processAutoLoginCookie:通过解析出来的用户名调用getUserDetailsService().loadUserByUsername(cookieTokens[0])查询出UserDetails,然后在加密查询出来的UserDetails,比较cookie中加密的字符串和查询出来的UserDetails加密字符串,若相同,完成自动登录

 

PersistentTokenBasedRememberMeServices

1. onLoginSuccess : 保存用户登录信息PersistentRememberMeToken到数据库和cookie(不会保存用户名到cookie,相对更安全)

2. processAutoLoginCookie : 通过解析出cookie中的数据,查询数据库中的PersistentRememberMeToken,检验查询出来的PersistentRememberMeToken是否过期,正确等等,最后查询出UserDetails,完成登录

3.对PersistentRememberMeToken做的数据库操作都是通过PersistentTokenRepository来完成的

 

TokenBasedRememberMeServices来实现的RememberMe

   在项目的security.xml文件中添加如下代码:

<security:http>
    <security:intercept-url pattern="/**" access="ROLE_USER"/>
    <security:form-login/>
    <security:logout logout-url="/logout"/>
    <security:remember-me key="chapter4"/>
</security:http>

 

PersistentTokenBasedRememberMeServices来实现RememberMe

1.   在数据库执行sql:

 

CREATE TABLE persistent_logins (
    username VARCHAR(64) NOT NULL,
    series VARCHAR(64) PRIMARY KEY,
    token VARCHAR(64) NOT NULL,
    last_used TIMESTAMP NOT NULL
);

 2.  修改security.xml文件:

<security:http>
    <security:intercept-url pattern="/**" access="ROLE_USER"/>
    <security:form-login/>
    <security:logout logout-url="/logout"/>
    <security:remember-me data-source-ref="securityDataSource"/>
</security:http>

 

  这里可以配置token-repository-ref或者data-source-ref  效果都是一样

<security:http>
    <security:intercept-url pattern="/**" access="ROLE_USER"/>
    <security:form-login/>
    <security:logout logout-url="/logout"/>
    <security:remember-me token-repository-ref="jdbcTokenRepositoryImpl"/>
</security:http>
<bean id="jdbcTokenRepositoryImpl" class="org.springframework.security.web.authentication.rememberme.JdbcTokenRepositoryImpl">
    <property name="dataSource" ref="securityDataSource"/>
</bean> 

 

 

 小忆智库:http://xiaoyizhiku.net

 

  • 大小: 56.3 KB
分享到:
评论

相关推荐

    spring-security源代码

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

    spring-security-core-3.1.0.RC1.jar

    5. **Remember Me服务**:此版本也包含Remember Me服务,允许用户在登录后一段时间内自动保持登录状态,提高用户体验。 三、`springframework-license.txt`文件 此文件通常包含软件的许可信息,对于Spring ...

    spring-security-3.1.4

    9. **集成Spring MVC**:Spring Security与Spring MVC的无缝集成,使得在Web应用中实现安全控制变得简单。 10. **支持多种数据库**:Spring Security可以与各种关系型数据库配合,如MySQL、Oracle等,通过JDBC或...

    spring-security-core-2.0.5.RELEASE.src

    - 对RememberMe服务进行了改进,增强了安全性。 总结 Spring Security通过`spring-security-core`模块提供了全面的安全管理能力,它将认证、授权、会话管理和安全配置等抽象成易于使用的组件。深入理解这个源代码...

    spring-security-4.0.3.RELEASE-全包

    2. **Authentication**:Spring Security提供了一套完整的身份验证机制,包括Remember Me服务、基于表单的登录、以及支持各种认证源如LDAP、数据库等。4.0.3版本可能包含了改进的认证流程和错误处理。 3. **...

    spring-security 官方文档 中文版

    - **Remember-Me 认证**:允许用户在关闭浏览器后仍然保持登录状态。 - **添加 HTTP/HTTPS 信道安全**:通过配置 HTTPS 来保障数据传输的安全。 - **会话管理**: - **检测超时**:设置会话超时时间。 - **同步...

    spring-security文档和jar包

    1. **认证**:通过提供不同类型的Authentication Provider,如数据库、LDAP、Remember Me服务等,Spring Security实现了灵活的用户身份验证。 2. **授权**:基于Role的访问控制(RBAC)允许开发者定义角色和权限,...

    spring-security-3.0.5.RELEASE 官方下载

    5. **Remember Me服务**:此版本可能包含了Remember Me功能,允许用户在一段时间内无须重新登录。它通过在用户的会话中存储长期令牌来实现。 6. **集成Spring MVC**:Spring Security可以与Spring MVC无缝集成,...

    spring-security实现复杂的权限管理

    此外,Spring Security支持记住我(Remember-Me)功能,允许用户在关闭浏览器后一段时间内仍然保持登录状态。这通过配置`remember-me`元素实现。 会话管理也是Spring Security关注的一部分。它可以防止会话劫持、...

    spring-security-3.1.0.RELEASE

    3.1.0.RELEASE版本引入了RememberMe服务,允许用户在一段时间内无需重新登录。 2. **授权**:基于角色的访问控制(RBAC)是Spring Security授权的基础,通过配置访问决策管理器(AccessDecisionManager)和访问决策...

    spring-security-3.1.0.RELEASE.zip

    - **Remember Me**:提供一种机制,允许用户在一段时间内无须重新登录。 3. **授权与访问控制** - **Role-Based Access Control (RBAC)**: 基于角色的访问控制,用户被分配角色,角色对应权限。 - **Expression-...

    spring-security-taglibs-2.0.4.jar.zip

    Spring Security Taglibs的核心在于提供了一系列预定义的JSP标签,这些标签能够帮助开发者轻松地实现身份验证、授权、会话管理等功能。2.0.4版本是该库的一个稳定版本,它修复了已知问题,提高了性能,并保持了与...

    spring-security cookie认证

    Spring Security 是一个强大的安全框架,用于Java和Spring应用程序。它为Web应用提供了全面的安全解决...在实际开发中,结合文件"springsecurity"中的示例代码,可以更好地理解和实践Spring Security的Cookie认证功能。

    spring-security-4.0 jar包

    Spring Security提供了Remember Me服务,允许用户在关闭浏览器后仍然保持登录状态。它通过存储一个长期的cookie来实现这一功能。 8. **国际化支持**: Spring Security 4.0支持多语言环境,可以方便地配置不同...

    Spring-Security_java_

    6. **Remember Me**: Spring Security 提供了“记住我”功能,允许用户在一段时间内无需重新登录。这个功能通过在用户的浏览器中设置长期 cookie 来实现。 7. **Session Management**: 该组件管理用户会话,防止...

    spring-security-3.2.9和spring-framework-3.2.4的jar包和源码

    6. **Remember Me**:允许用户在关闭浏览器后仍能保持登录状态。 7. **CSRF防护**:防止恶意第三方发起未经授权的请求。 理解并熟练运用Spring Security和Spring Framework,可以帮助开发者构建健壮且安全的应用...

    spring-security-2.0.3

    6. **记住我功能**:Spring Security允许用户选择在关闭浏览器后仍然保持登录状态,通过“Remember Me”服务实现。在2.0.3中,可以学习如何配置和安全地实现这一特性。 7. **异常处理**:Spring Security有自己的...

    SpringSecurity3.1.3的jar包

    例如,它包含RememberMe服务、HTTP基本和表单登录、CSRF防护以及URL级别的访问控制等功能。 3. **spring-security-config-3.1.3.RELEASE.jar**:配置模块允许开发者通过XML或Java配置来声明式地定义安全规则。它...

    spring-security简单demo

    8. **记住我(Remember Me)**:Spring Security提供了"记住我"功能,允许用户在关闭浏览器后仍能保持登录状态。这通常涉及到一个持久化的Token存储,如数据库。 这个"spring-security简单demo"应该涵盖以上这些...

    spring-security demo

    在这个项目中,我们可以深入学习如何使用Spring Security来实现用户认证、权限控制以及安全相关的功能。 首先,Spring Security的核心组件包括: 1. **Filter Security Chain**: 这是一系列的过滤器,它们在HTTP...

Global site tag (gtag.js) - Google Analytics