shiro是從根物件securitymanager進行身份驗證和授權的;也就是所有操作都是自它開始的,這個物件是執行緒安全且真個應用只需要乙個即可,因此shiro提供了securityutils讓我們繫結它為全域性的,方便後續操作。
因為shiro的類都是pojo的,因此都很容易放到任何ioc容器管理。但是和一般的ioc容器的區別在於,shiro從根物件securitymanager開始導航;shiro支援的依賴注入:public空參構造器物件的建立、setter依賴注入。
以純**的方式配置:
public
class
nonconfigurationcreatetest
}
相當於一下ini配置
# 該文件相當於 nonconfigurationcreatetest的配置
[main]
#authenticator
authenticator=org.apache.shiro.authc.pam.modularrealmauthenticator
authenticationstrategy=org.apache.shiro.authc.pam.atleastonesuccessfulstrategy
authenticator.authenticationstrategy=$authenticationstrategy
securitymanager.authenticator=$authenticator
#authorizer
authorizer=org.apache.shiro.authz.modularrealmauthorizer
permissionresolver=org.apache.shiro.authz.permission.wildcardpermissionresolver
authorizer.permissionresolver=$permissionresolver
securitymanager.authorizer=$authorizer
#realm
datasource=com.alibaba.druid.pool.druiddatasource
datasource.driverclassname=com.mysql.jdbc.driver
datasource.url=jdbc:mysql://localhost:3306/shiro
datasource.username=root
datasource.password=root
jdbcrealm=org.apache.shiro.realm.jdbc.jdbcrealm
jdbcrealm.datasource=$datasource
jdbcrealm.permissionslookupenabled=true
securitymanager.realms=$jdbcrealm
[main]部分
提供了對根物件securitymanager及其依賴物件的配置。
建立物件
securitymanager=org.apache.shiro.mgt.defaultsecuritymanager
其構造器必須是public空參構造器,通過反射建立相應的例項。
常量值setter注入
datasource.driverclassname=com.mysql.jdbc.driver
jdbcrealm.permissionslookupenabled=true
會自動呼叫jdbcrealm.setpermissionslookupenabled(true),對於這種常量值會自動型別轉換。
物件引用setter注入
authenticator=org.apache.shiro.authc.pam.modularrealmauthenticator
authenticationstrategy=org.apache.shiro.authc.pam.atleastonesuccessfulstrategy
authenticator.authenticationstrategy=$authenticationstrategy
securitymanager.authenticator=$authenticator
會自動通過securitymanager.setauthenticator(authenticator)注入引用依賴。
巢狀屬性setter注入
securitymanager.authenticator.authenticationstrategy=$authenticationstrategy
也支援這種巢狀方式的setter注入。
byte陣列setter注入
#base64 byte
authenticator.bytes=a**sbg8=
#hex byte
authenticator.bytes=0x68656c6c6f
預設需要使用base64進行編碼,也可以使用0x十六進製制。
array/set/list setter注入
authenticator.array=1,2,3
authenticator.set=$jdbcrealm,$jdbcrealm
多個之間通過「,」分割。
map setter注入
authenticator.map=$jdbcrealm:$jdbcrealm,1:1,key:abc
即格式是:map=key:value,key:value,可以注入常量及引用值,常量的話都看作字串(即使有泛型也不會自動造型)。
例項化/注入順序
realm=realm1
realm=realm12
authenticator.bytes=a**sbg8=
authenticator.bytes=0x68656c6c6f
後邊的覆蓋前邊的注入。
[users]部分
配置使用者名稱/密碼及其角色,格式:「使用者名稱=密碼,角色1,角色2」,角色部分可省略。如:
[users]
zhang=123,role1,role2
wang=123
[roles]部分
配置角色及許可權之間的關係,格式:「角色=許可權1,許可權2」;如:
[roles]
role1=user:create,user:update
role2=*
[urls]部分
配置url及相應的***之間的關係,格式:「url=***[引數],***[引數],如:
[urls]
/admin/** = authc, roles[admin], perms["permission1"]
什麼是shiro 4 INI配置說明
提供了對根物件securitymanager及其依賴的配置 securitymanager org.apache.shiro.mgt.defaultsecuritymanager securitymanager.realms jdbcrealm提供了對使用者 密碼及其角色的配置,使用者名稱 密碼,角...
Shiro的INI配置檔案
一 ini檔案簡介 ini配置檔案是一種key value的鍵值對配置,分為 main users roles urls 四個部分,每乙個部分中的key不可重複,號代表注釋,shiro.ini檔案預設在 web inf 或classpath下,shiro會自動查詢,ini配置檔案相當於乙個靜態資料庫...
Shiro 二 基於 ini 配置檔案
完整 demo org.apache.shirogroupid shiro allartifactid 1.2.5version dependency 定義使用者 users 使用者名稱 z3admin,密碼 12345,角色 admin z3admin 12345,admin 使用者名稱 l4pr...