在Spring MVC 3.1应用程序中,我试图实现 Remember-me 功能(信息保存在数据库中)。

这是我目前拥有的:

  • 我创建了persistent_logins表。
  • 我的安全上下文文件中有这个:
    <form-login login-page="/login"
            authentication-failure-url="/login?err=true"
            default-target-url="/"
            username-parameter="username"
            password-parameter="password"
            login-processing-url="/validatelogin" />
    
    <remember-me key="some_random_key"
             token-validity-seconds="31536000"
             data-source-ref="dataSource" />
    
  • 在我的login.jsp中,我有:
    <form action="/validatelogin" method="post">
        username : <input type='text' id='username' name='username' value='${SPRING_SECURITY_LAST_EXCEPTION.authentication.principal}' />
        <br />
        password : <input type='password' id='password' name='password' />
        <br /><br />
        remember me : <input type="checkbox" name="_spring_security_remember_me" />
        <br /><br />
        <input type="submit" value="submit" />
    </form>
    

  • 在“” bean中,我已经能够使用username-parameter和password-parameter重命名jsp中必须使用的默认“j_password”和“j_username”字段。但我找不到重命名“_spring_security_remember_me”复选框字段的方法。

    关于如何重命名的任何想法?

    最佳答案

    这是使用parameter RememberMeServices 属性设置的。

    遗憾的是,这不能使用 namespace 配置来设置。您可以通过以下几种方法进行设置:

  • 创建一个自定义的RememberMeServices并通过<remember-me services-ref="myRememberMeServices">使用它。在您的bean上设置属性。
  • Use a BeanPostProcessor (see 1.8)设置默认RememberMeServices的属性。
  • 09-10 23:45