用Shiro做登入權限控制時,密碼加密是自定義的。
資料庫的密碼通過散列擷取,如下,算法為:md5,鹽為一個随機數字,散列疊代次數為3次,最終将salt與散列後的密碼儲存到資料庫内,第二次登入時将登入的令牌再進行同樣的運算後再與資料庫的做對比。
建立RetryLimitHashedCredentialsMatcher類,此類有登入失敗次數的判斷,多于5次後再等待10分鐘後才能重試。
緩存機制用到了Ehcache,Ehcache是很多Java項目中使用的緩存架構,Hibernate就是其中之一。它的本質就是将原本隻能存儲在記憶體中的資料通過算法儲存到硬碟上,再根據需求依次取出。你可以把Ehcache了解為一個Map<String,Object>對象,通過put儲存對象,再通過get取回對象。
spring-shiro.xml内加入配置
ehcache.xml的配置如下:
實作Realm類MyShiro繼承自AuthorizingRealm,AuthorizingRealm實作它的抽象方法doGetAuthorizationInfo權限角色進行配置,AuthorizingRealm又繼承自AuthenticatingRealm,AuthenticatingRealm也有一個抽象方法doGetAuthenticationInfo,實作doGetAuthenticationInfo方法對登入的令牌等資訊進行驗證。
myShiro的職則是對登入進行授權,對角色、權限進行驗證等。
完整的spring-shiro.xml檔案如下: