首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Spring Security中的"Remember Me“

Spring Security中的"Remember Me“
EN

Stack Overflow用户
提问于 2018-06-23 08:50:39
回答 1查看 1.2K关注 0票数 0

我想使用spring security中的"Remember-me“功能来让用户保持登录状态。在我的应用程序中,我为用户提供了一个复选框来选择remember-me,如果用户选中它,那么在成功登录后,spring应用程序会向浏览器发送一个remember-me cookie。我有三个字段:用户名,密码和代码。我希望将这些字段保留为登录状态。

这是secuirty.xml中的配置:

代码语言:javascript
复制
<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"/>
.....
.....
代码语言:javascript
复制
<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>

这是"UserDetailsServiceImpl“类:

代码语言:javascript
复制
@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);
    }

我的问题是,只有用户名和密码字段被保留并发送给remember me。请保留代码字段中缺少的内容?

EN

回答 1

Stack Overflow用户

发布于 2018-06-24 02:21:33

您需要在您的登录表单中发送http参数,其名称与您的配置相对应-remember me- parameter =“remember me”,在您的情况下是“remember me”。您可以将以下代码添加到您的登录表单中:

代码语言:javascript
复制
<div class="checkbox">
      <label><input class="checkbox" type="checkbox" name="remember-me">Remember me</label>
</div>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50997061

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档