Shiro內(nèi)置Realm之IniRealm

Shiro內(nèi)置Realm

  • IniRealm
  • JdbcRealm
    happy

IniRealm

主要是將數(shù)據(jù)存放到相應(yīng)的xxx.ini即文件系統(tǒng)中,從文件中查找相應(yīng)的數(shù)據(jù)是否存在。

本文中文件放置在系統(tǒng)類路徑下

認(rèn)證userAuthenticator.ini

#用來認(rèn)證
#============================
#設(shè)置用戶,可設(shè)置多名用戶
[users]
jarworker=123
小明=1234

授權(quán)userAuthorizer.ini

#用來授權(quán)
#===========================
#設(shè)置用戶及用戶角色
[users]
jarworker=123,admin
#設(shè)置角色與角色權(quán)限
[roles]
admin=user:delete,user:update
tourist=user:query

maven依賴

    <dependency>
        <groupId>org.apache.shiro</groupId>
        <artifactId>shiro-core</artifactId>
        <version>1.4.0</version>
    </dependency>
    <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>4.12</version>
    </dependency>

測試用例

package com.jarworker.test;

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.Before;
import org.junit.Test;

/**
 * Shiro的IniRealm
 */
public class IniRealmTest {
    IniRealm iniRealm;
    IniRealm iniRealm_1;
    @Before
    public void addIniRealmTestUser() throws Exception {
        iniRealm=new IniRealm("classpath:userAuthenticator.ini");//認(rèn)證
        iniRealm_1=new IniRealm("classpath:userAuthorizer.ini");//授權(quán)
    }

    /**
     * 認(rèn)證過程
     * @throws Exception
     */
    @Test
    public void testIniRealmAuthenticator() throws Exception {
        //構(gòu)建DefaultSecurityManager 環(huán)境
        DefaultSecurityManager defaultSecurityManager = new DefaultSecurityManager();
        defaultSecurityManager.setRealm(iniRealm);
        //主體提交認(rèn)證請求
        SecurityUtils.setSecurityManager(defaultSecurityManager);
        Subject subject = SecurityUtils.getSubject();

        UsernamePasswordToken token = new UsernamePasswordToken("小明","1234");
        subject.login(token);
        System.out.println("是否認(rèn)證:"+subject.isAuthenticated());
    }

    /**
     * 授權(quán)過程
     * @throws Exception
     */
    @Test
    public void testIniRealmAuthorizer() throws Exception {
        //構(gòu)建DefaultSecurityManager 環(huán)境
        DefaultSecurityManager defaultSecurityManager = new DefaultSecurityManager();
        defaultSecurityManager.setRealm(iniRealm_1);
        //主體提交認(rèn)證請求
        SecurityUtils.setSecurityManager(defaultSecurityManager);
        Subject subject = SecurityUtils.getSubject();

        UsernamePasswordToken token = new UsernamePasswordToken("jarworker","123");
        subject.login(token);
        System.out.println("是否認(rèn)證:"+subject.isAuthenticated());
        subject.checkRoles("admin");
        subject.checkPermission("user:delete");//是否擁有刪除的權(quán)限
        subject.checkPermission("user:update");//是否擁有更新的權(quán)限
    }
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容