第十三章 RememberMe

2021-08-08 16:28:17 字數 1777 閱讀 6345

跟我學shiro第13章demo(rememberme)

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

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

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

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

rememberme 配置

spring-shiro-web.xml配置:

<?xml version="1.0" encoding="utf-8"?>		

!/login.jsp=authc

/logout=logout

/authenticated.jsp=authc

/**=user

測試:1、訪問http://localhost:8080/chapter13/,會跳轉到登入頁面,登入成功後會設定會話及rememberme cookie;

2、關閉瀏覽器,此時會話cookie將失效;

3、然後重新開啟瀏覽器訪問http://localhost:8080/chapter13/,還是可以訪問的;

4、如果此時訪問http://localhost:8080/chapter13/authenticated.jsp,會跳轉到登入頁面重新進行身份驗證。

如果要自己做rememeberme,需要在登入之前這樣建立token:usernamepasswordtoken(使用者名稱,密碼,是否記住我),如:

subject subject = securityutils.getsubject();

usernamepasswordtoken token = new usernamepasswordtoken(username, password);

token.setrememberme(true);

subject.login(token);

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

subject.isremembered():表示使用者是通過記住我登入的,此時可能並不是真正的你(如你的朋友使用你的電腦,或者你的cookie 被竊取)在訪問的;且兩者二選一,即subject.isauthenticated()==true,則subject.isremembered()==false;反之一樣。

另外對於過濾器,一般這樣使用(見spring-shiro-web.xml中的**filterchaindefinitions):

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

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

因此rememberme使用過程中,需要配合相應的***來實現相應的功能,用錯了***可能就不能滿足你的需求了。

第十三章 併發

13.1 動機 13.2 基本執行緒 如果必須要控制現成的執行順序,最好是根本不用執行緒,而是自己編寫特定順序彼此控制的協作子程式。繼承thread類或者實現runnable介面。內部類實現。13.3 共享受限資源 1 如果要對類中的某個方法進行同步控制,最好同步所有方法。如果忽略了其中乙個,通常很...

第十三章 類

1.類簡單地說是乙個性的資料型別。類當中有資料成員,和成員函式。類的基本思想就是體現出資料的抽象和封裝。2.這裡只需要說明乙個問題即可 就是類成員函式的const型別 class screen public const int get const int i const int j const 這裡...

第十三章 事件

1 事件的作用 事件是對委託的封裝,如同屬性對字段的封裝。封裝後可以在委託上實現更複雜的邏輯。1.1 封裝訂閱 委託允許使用 對其進行賦值,但向乙個委託例項賦值多個委託時,使用 會造成覆蓋之前的委託。事件只支援 或 對事件進行賦值 1.2 封裝發布 委託可以在其他類進行訪問,而事件可以確保只有包容類...