Spring 安全性:在浏览器中创建了记住我的 cookie,但未保存密码
Spring security: remember-me cookie is created in the browser but password is not saving
我正在使用 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 列表中看到记住我的 cookie。所以 cookie 存在但无法在正确的位置检索到。是什么导致了这些情况?这是我的代码还是服务器端的问题?
在你给的配置文件中
rememberMeParameter("remember-me")
但是在你的 html
<input type="checkbox"/> Remember Me
Spring 安全性未获取参数 'remember-me'。尝试将 "remember-me" 作为复选框的 html 中的名称。希望对您有所帮助。
我正在使用 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 列表中看到记住我的 cookie。所以 cookie 存在但无法在正确的位置检索到。是什么导致了这些情况?这是我的代码还是服务器端的问题?
在你给的配置文件中
rememberMeParameter("remember-me")
但是在你的 html
<input type="checkbox"/> Remember Me
Spring 安全性未获取参数 'remember-me'。尝试将 "remember-me" 作为复选框的 html 中的名称。希望对您有所帮助。