shiro安全框架入门复习步骤3-获取权限数据IniRealm提供subject桥梁 -ini配置用户权限角色等信息

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/xiangshuai198807/article/details/88864912

 

备注:idea如何建资源文件,与eclipse有点不同,需先建目录,在将目录 Mark为资源文件,如图

 

package com.xiangshuai.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.Test;



/**

 * @author  lqx   IniReal

 * @create 2019-03-03 18:24

 * ini文件需

 * File->setting->Plugins->Browse Repositories->搜索ini4idea   下载后并安装

 * usesr.ini src的资源文件resources下的 user.ini,内容如下

 * #定义用户

[users]

#用户名 zhang3  密码是 12345, 角色是 admin

zhang3=12345,admin

#用户名 xiaohong  密码是 12345, 角色是 程序员,也是管理员

xiaohong=123,cxy,admin

#用户名 li4  密码是 abcde, 角色是 产品经理

li4 =abcde,productManager

#定义角色

[roles]

#管理员对user什么都能做

admin=user:*

#程序员能有删除用户权限,以及update权限

cxy=user:delete,user:update

#产品经理只能做产品管理

productManager=addProduct,deleteProduct,editProduct,updateProduct,listProduct



   pom.mxl如下

<?xml version="1.0" encoding="UTF-8"?>

<project xmlns="http://maven.apache.org/POM/4.0.0"

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">

<modelVersion>4.0.0</modelVersion>



<groupId>com.xiangshuai</groupId>

<artifactId>xiangshuai-shiro</artifactId>

<packaging>pom</packaging>

<version>1.0-SNAPSHOT</version>

<modules>

<module>shiro-test</module>

</modules>





</project>

 * *  E:\学习文档子目录压缩\框架\shiro\shiro安全框架入门\复习步骤3-获取权限数据IniRealm提供subject桥梁 - ini配置用户权限角色等信息

或 或 我的网盘/我的笔记/学习文档子目录压缩/框架/shiro/shiro安全框架入门/复习步骤3-获取权限数据IniRealm提供subject桥梁 - ini配置用户权限角色等信息


 
 *
 */

public class IniRealmTest {
   
@Test
   
public void testIniRealmTest(){
        IniRealm iniRealm=
new IniRealm("classpath:user.ini");//新建Real user.ini配置文件中获取信息到Real
       
//创建SecurityManger环境,手动添加个Reals到创建SecurityManger环境中

       
DefaultSecurityManager defaultSecurityManager = new DefaultSecurityManager();
       
defaultSecurityManager.setRealm(iniRealm);
       
//主体Subject主动提交认证请求
       
SecurityUtils.setSecurityManager(defaultSecurityManager);
       
Subject subject = SecurityUtils.getSubject();

       
// subject主体里面加 登录token
       
UsernamePasswordToken token = new UsernamePasswordToken("xiaohong","123");
       
subject.login(token);

       
//Reals subject和数据库(这里事模拟的)进行比对,看是否能通过验证  --true

       
System.out.println("subject是否通过认证:"+subject.isAuthenticated());
       
System.out.println("subject是否通过认证:"+subject.hasRole("admin"));//subject是否有superadmin权限
       
subject.checkRoles("cxy","admin");//  如果subject 没有同时没有含useradmin角色 会报 Subject does not have role [user] 这个错

       
// 检查subject是否有如下权限
       
subject.checkPermissions("ss:insert");// 如果subject没有这个权限,就会报[ss:insert]
      
/*
       IniRealm iniRealm = new IniRealm("classpath:user.ini");
        //1.
构建SecurityManager
        DefaultSecurityManager defaultSecurityManager = new DefaultSecurityManager();
        defaultSecurityManager.setRealm(iniRealm);

        //2.
主体提交认证请求
        SecurityUtils.setSecurityManager(defaultSecurityManager);
        Subject subject = SecurityUtils.getSubject();

        UsernamePasswordToken token = new UsernamePasswordToken("Mark","123456");
        subject.login(token);

        System.out.println("isAuthenticated:"+subject.isAuthenticated());

        subject.checkRole("admin");

        subject.checkPermission("user:update");
       */
   
}

}

 

猜你喜欢

转载自blog.csdn.net/xiangshuai198807/article/details/88864912