shiro學習筆記 4 ini 配置

2021-09-24 15:37:50 字數 3744 閱讀 6196

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