Shiro系列十五 Rememberme

2021-09-24 05:31:03 字數 1221 閱讀 7950

shiro 提供了記住我(rememberme)的功能,比如訪問如**等一些**時,關閉了瀏覽器,下次再開啟時還是能記住你是誰, 下次訪問時無需再登入即可訪問,基本流程如下:

1、首先在登入頁面選中 rememberme 然後登入成功;如果是瀏覽器登入,一般會把 rememberme 的cookie 寫到客戶端並儲存下來;

2、關閉瀏覽器再重新開啟;會發現瀏覽器還是記住你的;

3、訪問一般的網頁伺服器端還是知道你是誰,且能正常訪問;

4、但是比如我們訪問**時,如果要檢視我的訂單或進行支付時,此時還是需要再進行身份認證的,以確保當前使用者還是你。

認證和記住我

subject.isauthenticated() 表示使用者進行了身份驗證登入的, 即使有 subject.login 進行了登入;

subject.isremembered():表示使用者是通過記住我登入的, 此時可能並不是真正的你(如你的朋友使用你的電腦,或者你的cookie 被竊取)在訪問的。

兩者只能二選一,即 subject.isauthenticated()==true,則 subject.isremembered()==false;反之一樣。

建議:訪問一般網頁:如個人在主頁之類的,我們使用user ***即可,user ***只要使用者登入 (isremembered() || isauthenticated())過即可訪問成功;

訪問特殊網頁:如我的訂單,提交訂單頁面,我們使用 authc ***即可,authc ***會判斷使用者是否是通過 subject.login(isauthenticated()==true)登入的,如果是才放行,否則會跳轉到登入頁面重新登入。

測試:1、設定訪問許可權

public class filterchaindefinitionmapbuilder 

}

2、開啟記住我功能。token.setrememberme(true)

@controller

public class shirohandler catch (authenticationexception ae)

}return "redirect:/list.jsp";

}}

3、在 securitymanager 中通過設定屬性 remembermemanager.cookie.maxage 來設定記住我的時間。單位是秒

《跟我學shiro》系列教程

第一章 shiro簡介 第二章 身份驗證 第三章 授權 第四章 ini配置 第五章 編碼 加密 第六章 realm及相關物件 第七章 與web整合 第八章 機制 第九章 jsp標籤 第十章 會話管理 第十一章 快取機制 第十二章 與spring整合 第十三章 rememberme 第十四章 ssl ...

ORACLE SQL效能優化系列(十五)

oracle sql效能優化系列 十一 36.用union替換or 適用於索引列 通常情況下,用union替換where子句中的or將會起到較好的效果.對索引列使用or將造成全表掃瞄.注意,以上規則只針對多個索引列有效.如果有column沒有被索引,查詢效率可能會因為你沒有選擇or而降低.在下面的例...

人臉識別系列(十五) COCO Loss

這篇文章其實和normface原理完全相同,只是推理的切入點稍微有點不同。兩篇 發表的時間也相近。因此博主就不再詳細寫分析了,如果有看得不太懂的可以參考我的normface閱讀筆記。人臉識別系列 十四 normface 值得一提的是,這篇文章有乙個亮點就是在lfw上刷到了99.86 的成績,十分驚豔...