Spring security 在春季安全中记得我吗

Spring security 在春季安全中记得我吗,spring-security,remember-me,Spring Security,Remember Me,如何在SpringSecurity中配置记忆我服务。我正在使用spring3.0+hibernate3+struts2。我已经做了如下尝试 login.jsp <input type="checkbox" name="_spring_security_remember_me"/>remember-me 记得我吗 applicationContext-security.xml <?xml version="1.0" encoding="UTF-8"?> <bean

如何在SpringSecurity中配置记忆我服务。我正在使用spring3.0+hibernate3+struts2。我已经做了如下尝试

login.jsp

<input type="checkbox" name="_spring_security_remember_me"/>remember-me
记得我吗
applicationContext-security.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
        xmlns:s="http://www.springframework.org/schema/security"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://www.springframework.org/schema/beans
          http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
          http://www.springframework.org/schema/security
          http://www.springframework.org/schema/security/spring-security-3.0.3.xsd">



    <description>SpringSecurity安全配置</description>

    <!-- http安全配置 -->
    <s:http auto-config="true" use-expressions="true" >
        <s:intercept-url pattern="/css/**" filters="none" />
        <s:intercept-url pattern="/img/**" filters="none" />
        <s:intercept-url pattern="/js/**" filters="none" />

        <s:intercept-url pattern="/account/user!save*" access="hasAnyRole('ROLE_修改用户')" />
        <s:intercept-url pattern="/account/user!delete*" access="hasAnyRole('ROLE_修改用户')" />
        <s:intercept-url pattern="/account/user*" access="hasAnyRole('ROLE_浏览用户')" />
        <s:intercept-url pattern="/account/role!save*" access="hasAnyRole('ROLE_修改角色')" />
        <s:intercept-url pattern="/account/role!delete*" access="hasAnyRole('ROLE_修改角色')" />
        <s:intercept-url pattern="/account/role*" access="hasAnyRole('ROLE_浏览角色')" />

        <s:form-login login-page="/login.action" default-target-url="/" authentication-failure-url="/login.action?error=true" />
        <s:logout logout-success-url="/" />
        <s:remember-me/>
    </s:http>

    <!-- 认证配置, 使用userDetailsService提供的用户信息 -->
    <s:authentication-manager erase-credentials="false">

        <s:authentication-provider user-service-ref="userDetailsService">
            <s:password-encoder hash="plaintext" />
        </s:authentication-provider>
    </s:authentication-manager>

    <!-- 项目实现的用户查询服务 -->
    <bean id="userDetailsService" class="net.top.system.service.account.UserDetailsServiceImpl" />
</beans>

SpringSecurity安全配置

但是没有任何用处。我还需要在我的应用程序中配置什么。

为了创建一个已经由Spring保护的应用程序,需要在XML中添加以下内容:

<sec:http authentication-manager-ref="authenticationManager">
    <sec:intercept-url pattern="/secure/**" access="ROLE_USER" />
       <sec:form-login/>
    <sec:custom-filter … />

    <sec:remember-me 
        data-source-ref="dataSource"
        user-service-ref="userDetailsService"/>
</sec:http>

请注意,使用“数据源”不是“必须”的,但它实际上声明要使用JDBC持久令牌。(在本例中,Spring使用PersistentTokenBasedMemberMeservices。)当然,数据源bean必须在XML中声明

因此,数据库中必须存在一个名为persistent_logins的表

“userDetailsService”是对UserService bean的引用,其中声明了用户和密码。它可以是XML格式,也可以指向数据库

在运行时,Spring创建了一个名为Spring\u SECURITY\u memory\u ME\u Cookie()的Cookie。它可以通过“JSESSION”Cookie看到。如果我们删除了JSESSION(这意味着我们打开了一个全新的会话,就像重新打开浏览器一样),“记住我”cookie会记住上次登录,并创建一个新的JSESSION

HTH:-)