java - Spring 安全: remember-me cookie is created in the browser but password is not saving

标签 java spring spring-security spring-java-config remember-me

我正在使用 Java 配置在我的网络应用程序中实现“记住我”,但它不起作用。我已经浏览了所有类似的问题,但没有找到解决我的问题的方法。

代码如下:

@Bean
    public PersistentTokenBasedRememberMeServices getPersistentTokenBasedRememberMeServices() {
        PersistentTokenBasedRememberMeServices tokenBasedservice = new PersistentTokenBasedRememberMeServices(
                "remember-me", userDetailsService, tokenRepository);
//        tokenBasedservice.setAlwaysRemember(true);
//        tokenBasedservice.setCookieName("remeber-me");
        return tokenBasedservice;
    }


@Override
    protected void configure(HttpSecurity http) throws Exception {
        http.
                 .....
                    .and().formLogin()
                    .loginPage("/login")
                    .failureUrl("/login-error")
                    .loginProcessingUrl("/login")
                    .usernameParameter("username")
                    .passwordParameter("password")
                    .defaultSuccessUrl("/")
                    .and().logout()
                    .logoutUrl("/logout")
                    .logoutSuccessUrl("/").and()
                    .rememberMe().rememberMeParameter("remember-me").tokenRepository(tokenRepository)
                    .tokenValiditySeconds(86400).and().csrf().and().exceptionHandling().accessDeniedPage("/access_denied");
        }

这是使用 thymeleaf 创建的 html

<div class="col-xs-12 col-sm-6 col-md-6">
    <h3>Login</h3>
    <div th:if="${loginError}"
         th:class="'alert alert-'+ *{loginError.type.name}+' alert-dismissible'">
        <button type="button" class="close" data-dismiss="alert" aria-hidden="true">×
        </button>
        <span><b th:text="*{loginError.description}"></b></span>
    </div>
    <form id="login-form" th:action="@{/login}" method="post">
        <div class="form-group">
            <label for="username" class="col-sm-4 control-label">Username</label>
            <div class="col-sm-6">
                <input type="text" class="form-control" id="username" placeholder=""
                       name="username"/>
            </div>
        </div>
        <!-- -->
        <div class="form-group">
            <label for="Password" class="col-sm-4 control-label">Password</label>
            <div class="col-sm-6">
                <input type="password" class="form-control" id="Password"
                       name="password"
                       placeholder=""/>
            </div>
        </div>
        <!-- -->
        <div class="form-group">
            <div class="col-sm-8 col-sm-offset-4 col-md-offset-4">
                <div class="pull-left m-r-20 checkbox icheck">
                    <div class="checkbox icheck">
                        <label>
                            <input type="checkbox" name="remember-me" id="remember-me"/> Remember Me
                        </label>
                    </div>
                </div>
.........

有人能解决这个问题吗?

更新:

当使用chrome检查代码时,我可以在cookie列表中看到remember-me cookie。所以cookie存在但无法在正确的位置检索。是什么原因导致这些场景的出现呢?这是我的代码还是服务器端的问题?

screen capture 1

screen capture 2

最佳答案

在您给出的配置文件中

rememberMeParameter("remember-me")

但是在你的html中

<input type="checkbox"/> Remember Me

Spring security 没有获取参数“remember-me”。尝试将“remember-me”作为复选框的 html 名称。希望有帮助。

关于java - Spring 安全: remember-me cookie is created in the browser but password is not saving,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47149751/

相关文章:

java - 是否可以将按钮添加到以编程方式设置的框架布局?

javascript - 将 jquery 库下载到项目错误 :java: Illegal char <:> at index 4: http:\api. jquery.com

java - MVC GET Controller ,带有 . PathVariable 中的 [dot] 值

java - Spring 安全: How to get the automatically rendered login page code?

Java split 给出相反顺序的阿拉伯字符

Java 8 Lambda 自动装箱Reduce 方法

java - Tomcat 8.5中部署的Spring Boot如何使用外部配置文件

spring - 使用自己的登录表单进行太多重定向 - Spring Security

spring - Spring Security授权-管理员被拒绝访问

java - 确定哪种类型的异常是可抛出的