記錄帖 Shiro 記住我 功能的有趣點

2021-08-30 17:29:58 字數 886 閱讀 1495

shiro提供了乙個rememberme功能,**如下:

usernamepasswordtoken.setrememberme(rememberme);

subject.login(usernamepasswordtoken);

看似很簡單,但實際上有許多有趣的地方,我統計了一下:

shrio會把使用者的session生成乙個對應的標識存入cookie,當rememberme的時候,也會儲存乙個rememberme的cookie。

但實際上session的cookie存在於瀏覽器程序裡,而rememberme的cookie存在於硬碟裡。所以當使用者關閉瀏覽器時,如果沒有rememberme,則需要重新登入。有趣的是,如果只是關閉頁面而沒有關閉瀏覽器,此時session的cookie仍然存在,使用者依然不需要重新登入,直到session過期。

通過瀏覽器看rememberme的cookie會發現是一串加密過的字串(個人猜測裡面記錄了當前使用者session相關的一些資料,當瀏覽器關閉後,shiro會先檢視瀏覽器是否有rememberme的cookie,如果有,則解密cookie,然後讀取資料生成使用者的session)。但是當後台伺服器重啟之後,進行解密cookie的時候會報錯,此時rememberme的cookie便會失效(個人繼續猜測伺服器存有解密cookie的秘鑰,或者驗證cookie的hash的秘鑰,當伺服器重啟之後會生成新的秘鑰,所以cookie的解密便會報錯)。

在shiro過濾的時候,我們可能這樣寫:

filterchaindefinitionmap.put("/**", "user");
但是將user改為authc之後,rememberme會被攔截,也就是說,rememberme為true,authc的url依然會要求使用者需要認證。

Web安全 Shiro 記住我功能

在 web安全 使用shiro做認證和訪問控制 中,我簡單了說明了shiro的用法,今天來講下利用shiro怎麼實現記住我功能,如下圖 如果勾選了記住我,那麼在關閉瀏覽器或伺服器重啟後,使用者開啟 會自動登入進去,無需再次輸入密碼。據我了解,記住我功能應該是shiro把使用者資訊序列化到cookie...

記住我功能實現

一 登陸時記住我功能實現。1.首先在前端介面新增乙個單選框,當表單提交的時候會一起提交過來。同時單選框傳送的屬性值分為ture和false。submit id btnlogin value 登入 class login btn errormsg style font size 14px color ...

登入記住我功能實現

說明 使用此功能我是在有伺服器環境下操作的 密碼 sfce cookie相關知識 引用檔案 src js jquery.cookie.js script jsp頁面一載入就執行判斷cookie中是否存入資訊並填入表單 document ready function if cookie name sc...