shiro的一點記錄(三)

2021-07-02 14:58:15 字數 1641 閱讀 4497

shiro的無狀態web整合。所謂無狀態就是伺服器端無狀態,就是不儲存會話。一般的會話機制的web應用,都是session機制來儲存使用者狀態。無狀態的web應用就是每次請求都帶上相應的使用者名稱進行登入。

具體的實踐就是:客戶端傳入秘鑰和乙個訊息作為輸入,他們聲稱相應訊息摘要,秘鑰是只有客戶端和服務端知道的。訪問的時候服務端對訊息摘要進行驗證。

具體的例項如下:

首先我們建立subject的工廠必須是不儲存session的:

public class statelessdefaultsubjectfactory extends defaultwebsubjectfactory 

}

我們自定義乙個無狀態的filter:

public class statelessauthcfilter extends accesscontrolfilter 

@override

protected boolean onaccessdenied(servletrequest servletrequest, servletresponse servletresponse) throws exception

catch (exception e)

return false;

}private void onloginfail(servletresponse response) throws ioexception

}

shiro框架沒有提供專門的無狀態的token,我們自己定義乙個:

public class statelesstoken implements authenticationtoken 。。。。。此處省略set和get**
自定義無狀態的realm:

public class statelessrealm extends authorizingrealm 

@override

protected authorizationinfo dogetauthorizationinfo(principalcollection principalcollection) else throw new incorrectcredential***ception();

}@override

protected authenticationinfo dogetauthenticationinfo(authenticationtoken token) throws authenticationexception

/*** 獲取秘鑰,此處是硬編碼的乙個

** @param username

* @return

*/private string getkey(string username)

return null;

}}

然後進行shiro的配置檔案部分內容:

這裡的sessionmanager的

sessionvalidationschedulerenabled屬性一定得設定為false。

這樣就可以使用啦。這裡沒有列出對使用者名稱和訊息生成訊息摘要的類,基本上就是對屬性加密的乙個類。

shiro的一點記錄(二)

這次主要寫shiro的exception定製,rememberme和ssl。exception頁面定製 不知道這個屬不屬於shiro自身的範疇,反正這裡用到了,就寫上吧,主要是這些exception都是shiro裡面的,所以就在這裡寫上吧。根據資料顯示,要定製錯誤頁面,需要在springmvc配置檔...

hook api的一點記錄

hook api方法不外乎有修改匯入表和修改目標函式 讓其調整到hook函式處執行。這裡僅僅說下後者。後者主要實現為 通過鉤子將 注入到目標程序 簡單點就通過鉤子載入dll的方式來hook 複雜點的話就 使用建立遠端執行緒的方式來進行 然後通過修改要注入的目標函式其實幾個位元組 一般來說是5個位元組...

kvo 的一點記錄

observevalueforkeypath ofobject change context 呼叫方法是裡 object 被觀察物件 observer 觀察物件 forkeypath裡面帶上property的name,如uiview的frame center等等 options 有4個值,分別是 n...