【问题标题】:"Remember Me" in Spring SecuritySpring Security 中的“记住我”
【发布时间】:2018-12-02 11:16:59
【问题描述】:

我想在 Spring Security 中使用“记住我”功能来让用户保持登录状态。在我的应用程序中,我为用户提供了一个复选框来选择记住我,如果用户选中它,那么在成功登录后,spring 应用程序会向浏览器发送一个记住我的 cookie。 我有三个字段:用户名、密码和代码。我想保留这些字段以供登录。

这是secuirty.xml中的配置:

<security:http auto-config="true" use-expressions="true">
.....
.....
<security:remember-me remember-me-cookie="rvm-track-rm" remember-me- 
parameter="remember-me" token-repository-ref="tokenRepository" token- 
validity-seconds="864000" key="rvm-track-web-html" user-service- 
ref="userDetailsServiceImpl"/>
.....
.....

<bean id="tokenRepository" class="org.springframework.security.web.
authentication.rememberme.InMemoryTokenRepositoryImpl"/>    

<bean id="requestContextFilter" class="org.springframework.web.
filter.RequestContextFilter"/>

<bean id="shaPasswordEncoder" class="org.springframework.security.
authentication.encoding.ShaPasswordEncoder"
<constructor-arg value="512" />
</bean>

<bean id="authenticationSuccessHandler" 
class="com.revomon.tracking.web.html.SuccessfulAuthenticationHandler"/>

<security:authentication-manager>
<security:authentication-provider user-service-ref="userDetailsServiceImpl"/>
</security:authentication-manager>

这是“UserDetailsS​​erviceImpl”类:

@Override
    @Transactional(readOnly = true)
    public UserDetails loadUserByUsername(final String userName) throws UsernameNotFoundException {
        logger.debug("Authenticate username {}", userName);
        ServletRequestAttributes attr = (ServletRequestAttributes) RequestContextHolder.currentRequestAttributes();
        String customerCode = (String) attr.getRequest().getParameter("customer_code");
        TrackAdminUser user = userDao.findByUsernameAndCustomerCode(userName, customerCode);
        return new WebUser(user);
    }

我的问题是只保留用户名和密码字段并将其发送给记住我。请问还缺少什么来保留代码字段?

【问题讨论】:

    标签: spring cookies spring-security remember-me


    【解决方案1】:

    您需要在您的登录表单中发送名称与您的配置相匹配的 http 参数 - remember-me-parameter="remember-me",在您的情况下为“remember-me”。您可以在登录表单中添加下一个代码:

    <div class="checkbox">
          <label><input class="checkbox" type="checkbox" name="remember-me">Remember me</label>
    </div>
    

    【讨论】:

    • 我已经有了这个我的登录表单:" ” 。但是“代码”字段仍然没有保留。
    猜你喜欢
    • 2015-05-10
    • 2012-01-21
    • 2014-09-04
    • 2012-03-13
    • 1970-01-01
    • 1970-01-01
    • 2017-11-15
    • 2016-01-31
    • 1970-01-01
    相关资源
    最近更新 更多