springboot中刪除@SessionAttributes注解的屬性


在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 忘記清除 導致無法退出登錄問題


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM