使用使用maven專案實現Java安全框架Shiro的內建Realm:IniRealm進行登陸許可權驗證
阿新 • • 發佈:2019-01-14
1.我們先建一個maven專案,如圖:
2.在pom.xml中新增如下依賴:
<dependencies> <dependency> <groupId>org.apache.shiro</groupId> <artifactId>shiro-core</artifactId> <version>1.4.0</version> </dependency> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>RELEASE</version> </dependency> </dependencies>
3.建立一個user.ini檔案,該檔案儲存使用者基本資訊和許可權資訊,user.ini的基本資訊如下:
[users] \#提供了對使用者/密碼及其角色的配置,使用者名稱=密碼,角色1,角色2 root=123456,admin [roles] \#提供了角色及許可權之間關係的配置,角色=許可權1,許可權2 admin=user:delete
4.現在正式開始編碼,包括檢查登陸認證、含有許可權,程式碼如下:
package com.wkf; import org.apache.shiro.SecurityUtils; import org.apache.shiro.authc.UsernamePasswordToken; import org.apache.shiro.mgt.DefaultSecurityManager; import org.apache.shiro.realm.text.IniRealm; import org.apache.shiro.subject.Subject; import org.junit.Test; /** * 使用內建IniRealm類讀取使用者 * @author wkf */ public class IniRealmTest { @Test public void testAuthentication(){ IniRealm iniRealm = new IniRealm("classpath:user.ini");//讀取使用者資訊檔案,IniRealm類:使用者資訊儲存類 //1.構建SecurityManager環境 DefaultSecurityManager defaultSecurityManager = new DefaultSecurityManager(); defaultSecurityManager.setRealm(iniRealm); //2.主體提交認證請求 SecurityUtils.setSecurityManager(defaultSecurityManager); Subject subject = SecurityUtils.getSubject(); UsernamePasswordToken token = new UsernamePasswordToken("root","123456"); subject.login(token);//登陸認證 System.out.println("認證結果:"+subject.isAuthenticated()); subject.checkRole("admin");//檢查角色授權(必須登陸認證後才行) subject.checkPermission("user:delete");//檢查角色許可權 } }