在SpringBoot中做登錄登出的操作時,將用戶通過@SessionAttributes注解存入到session中,很是方便。結果發現登出時,使用session.removeAttribute("user")
沒有用,不能登出。
發現問題之后,開始面向Baidu的編程。
原來我的登錄時候存入的屬性到session的方式:
@SessionAttributes(value = {"userInfo"})
...
model.addAttribute("userInfo", user);
退出登錄時候的方式:
@RequestMapping("/logout")
public String logout(HttpSession session) {
session.removeAttribute("userInfo");
return "redirect:/login";
}
經過Baidu的文章的詳細描述。了解到,session.removeAttribute()
只能刪除httpSession中的數據,不能影響到@SessionAttributes
中的屬性。
修改為
@RequestMapping("/logout")
public String logout(HttpSession session, SessionStatus sessionStatus) {
session.removeAttribute("userInfo");
sessionStatus.setComplete();
return "redirect:/login";
}
參考博客:清除@SessionAttributes 網站實現退出登錄
spring mvc-@SessionAttributes 忘記清除 導致無法退出登錄問題