1. 程式人生 > >使用使用maven專案實現Java安全框架Shiro的內建Realm:IniRealm進行登陸許可權驗證

使用使用maven專案實現Java安全框架Shiro的內建Realm:IniRealm進行登陸許可權驗證

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");//檢查角色許可權

    }
}