Shiro學習筆記(二)--- IniRealm
阿新 • • 發佈:2018-11-19
一、簡介
不同於上一章的simpleRealm,這一章用的是iniRealm。區別在於iniRealm是讀取於配置檔案xxx.ini 來獲取使用者資訊,角色資訊和許可權資訊。
二、配置檔案
idea中,可以把配置檔案放在resource下
ini檔案遇到":"或者"=", 會作為一對key value來處理
user.ini檔案的定義格式為:[users] 使用者名稱=密碼,角色 [roles] 角色=許可權名(例子:amdin=user:delete,user:update)
[users] admin=123456,admin,user [roles] admin=user:delete
三、測試程式碼
程式碼整體跟上一章差別不大,少了@Before部分的使用者初始化(換成了讀取配置檔案)
public class IniRealmTests { @Test public void contextLoads() { // 讀取配置檔案 IniRealm iniRealm = new IniRealm("classpath:user.ini"); // 構建DefaultSecurityManager DefaultSecurityManager defaultSecurityManager = new DefaultSecurityManager(); // 設定Realm defaultSecurityManager.setRealm(iniRealm); // 設定構建DefaultSecurityManager SecurityUtils.setSecurityManager(defaultSecurityManager); // 建立驗證物件 UsernamePasswordToken usernamePasswordToken = new UsernamePasswordToken("admin", "123456"); // 建立subject物件並提交登陸token請求 Subject subject = SecurityUtils.getSubject(); subject.login(usernamePasswordToken); System.out.println("驗證是否有許可權:" + subject.isAuthenticated()); // 驗證使用者是否有user角色,若沒有改許可權會丟擲 UnauthorizedException 異常 // 同時checkRoles 可以傳多個引數,同時驗證多個角色 subject.checkRoles("user"); subject.checkPermissions("user:delete"); } }