筆記
shiro登陸認證流程
1.通過seucrityutils獲取當前使用者(subject),呼叫securityutils.getsubject()方法
2.判斷使用者是否登陸currentuser.isauthenticated()
3.如果使用者沒有登陸,獲取登入頁面傳過來的值(springmvc@handler)
4.建立令牌usernamepasswordtoken token = new usernamepasswordtoken(#username, #password)
5.通過realm(繼承org.apache
.shiro
.realm
.authenticatingrealm)與資料庫中的使用者密碼比對
密碼的比對:通過 authenticatingrealm 的 credentialsmatcher 屬性來進行的密碼的比對!
密碼加密
# 如何把乙個字串加密為 md5?
替換當前 realm 的 credentialsmatcher 屬性. 直接使用 hashedcredentialsmatcher 物件, 並設定加密演算法即可.
# 使用 md5 鹽值加密:
如何做到:
1). 在 dogetauthenticationinfo 方法返回值建立 ******authenticationinfo 物件的時候, 需要使用
******authenticationinfo(principal, credentials, credentialssalt, realmname) 構造器
2). 使用 bytesource.util
.bytes() 來計算鹽值.
3). 鹽值需要唯一: 一般使用隨機字串或 user id
4). 使用 new ******hash(hashalgorithmname, credentials, salt, ha****erations); 來計算鹽值加密後的密碼的值.
#如何授權
1. 授權需要繼承 authorizingrealm 類, 並實現其 dogetauthorizationinfo 方法
2. authorizingrealm 類繼承自 authenticatingrealm, 但沒有實現 authenticatingrealm 中的
dogetauthenticationinfo, 所以認證和授權只需要繼承 authorizingrealm 就可以了. 同時實現他的兩個抽象方法.
總結:1.shiro加密原先實現方法都是寫加密工具類,可以通過配置md5鹽值加密,這樣加密都不用自己實現,當然你向資料庫中存資料時當然要手寫加密演算法,一會把之前做多realm測試的加密演算法貼出來
2.url許可權資源可以放到配置檔案或資料庫中,這些就降低了spring配置檔案的壓力,一堆堆的url配置很佔空間.
3.授權時要注意在配置md5鹽值加密時注意介面
4.我在學習時候已經把上面的筆記寫在配置檔案中了
public
static
void
main(string args)
shiro與spring的整合
1.除了spring本身專案的jar包,還要加入四個jar包 1 shiro all 1.2.5.jar 2 slf4j api 1.7.7.jar 3 slf4j log4j12 1.7.7.jar 4 log4j 1.2.17.jar 2.首先進行web.xml的配置 參考官方的文件 需要在we...
Spring整合Hibernate學習筆記
spring整合hibernate,spring配置檔案需要做的修改為 1 配置資料來源 datasource 2 配置sessionfactory,spring的主要類有annotationsessionfactorybean 註解方式 和localsessionfactorybean hbm配置...
Spring 整合Hibernate學習筆記
整合的目的是讓 ioc 容器來管理 hibernate 的 sessionfactory,讓hibernate 使用 spring 來進行事務管理。具體步驟 1.加入所需jar包 2.新增 hibernate 的配置檔案 hibernate.cfg.xml,編寫了持久化類對應的 hbm.xml 檔案...