gpt4 book ai didi

java - Spring Security 记住我注销问题

转载 作者:行者123 更新时间:2023-11-30 07:18:11 24 4
gpt4 key购买 nike

我在记住我方面遇到问题。我已经使用 PersistentTokenRepository 实现了它。除了注销之外一切正常。

登录后,数据库中创建新记录,用户拥有记住我的cookie。

删除 session cookie后,用户获得新的cookie,数据库中的旧记录被更新。

/logout 之后,不会调用 logout 方法(来自 PersistentTokenBasedRememberMeServices,我通过扩展类和日志记录进行了检查)。如何将其添加到注销过滤器或类似的东西?我检查了源代码,logout方法调用从数据库中删除记录并删除co​​okie,所以我只需要调用它。我正在使用 java 配置。

安全性:

http.csrf();
http.authorizeRequests().antMatchers("/").permitAll().antMatchers("/test").hasRole("USER")
.antMatchers("/made/administration/**").hasRole("ADMIN");
http.formLogin().loginPage("/login").usernameParameter("email").passwordParameter("password");
http.logout().logoutUrl("/logout").logoutSuccessUrl("/login?logout");
http.exceptionHandling().accessDeniedPage("/access-denied");
http.rememberMe().tokenRepository(persistentTokenRepository)
.tokenValiditySeconds(rememberMeValidSeconds);

最佳答案

问题已解决。我必须更改 Controller ,因为我正在使用 csrf - 通过 POST(而不是 GET)注销。

所以我删除了:

@RequestMapping(value = "/logout", method = RequestMethod.GET)
public String logoutPage(HttpServletRequest request, HttpServletResponse response) {
Authentication auth = SecurityContextHolder.getContext().getAuthentication();
if (auth != null) {
new SecurityContextLogoutHandler().logout(request, response, auth);
}
return "redirect:/login?logout";
}

并将表单添加到 POST /logout

关于java - Spring Security 记住我注销问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38040269/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com