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...