shiro (三)权限角色判断

shiro_permis.ini配置文件

[users]
java1234=123456,role1,role2
jack=123,role1
[roles]
role1=user:select
role2=user:select.user:add,user:delete,user:update

shiroutil.java 工具类

package com.java1234.shiro;

import org.apache.shiro.SecurityUtils;
import org.apache.shiro.authc.AuthenticationException;
import org.apache.shiro.authc.UsernamePasswordToken;
import org.apache.shiro.config.IniSecurityManagerFactory;
import org.apache.shiro.mgt.SecurityManager;
import org.apache.shiro.subject.Subject;
import org.apache.shiro.util.Factory;

public class shiroutil {
	public static Subject SecurityUserlogi(String path,String user,String psw)throws AuthenticationException {
		Factory factory=new IniSecurityManagerFactory("classpath:"+path);
		//获取SecurityManager实例
		SecurityManager  securitymanager=factory.getInstance();
		//把SecurityManager实例绑定SecurityUtils
		SecurityUtils.setSecurityManager(securitymanager);
		//得到当前执行的账户
		Subject SecurityUser = SecurityUtils.getSubject();
		//创建令牌
		UsernamePasswordToken Token=new UsernamePasswordToken(user,psw);
		try {
		//身份验证
			SecurityUser.login(Token);
			System.out.println("登录成功");
		}catch(AuthenticationException e) {
			System.out.println("登录失败");
			e.printStackTrace();
		}
		return SecurityUser;
	}
}

测试文件

package com.java1234.shiro;

import static org.junit.Assert.*;

import java.util.Arrays;

import org.apache.shiro.subject.Subject;
import org.junit.Test;

public class shirotest {
	/***
	 * 判断是否有指定角色
	 */
	@Test
	public void test() {
		Subject SecurityUser = shiroutil.SecurityUserlogi("shiro_role.ini","jack","123");
		System.out.println(SecurityUser.hasRole("role1")?"有role1这个角色":"没有role1这个角色");
		System.out.println(SecurityUser.hasRole("role2")?"有role2这个角色":"没有role2这个角色");
	}
	/***
	 * hasRoles能判断多个角色
	 */
	@Test
	public void test1() {
		Subject SecurityUser = shiroutil.SecurityUserlogi("shiro_role.ini","jack","123");
		boolean[]ss=SecurityUser.hasRoles(Arrays.asList("role1","role2"));
		System.out.println(ss[0]?"有role1":"无role1");
		System.out.println(ss[1]?"有role2":"无role2");
	}

/***
 * checkRole和checkRoles通过不返回信息,不通过则报异常
 */
@Test
public void test2() {
	Subject SecurityUser = shiroutil.SecurityUserlogi("shiro_role.ini","jack","123");
	SecurityUser.checkRole("role1");
	SecurityUser.checkRoles(Arrays.asList("role1","role2"));
	}

/***
 * isPermitted判断是否有次权限
 */
@Test
public void test3() {
	Subject SecurityUser = shiroutil.SecurityUserlogi("shiro_permis.ini","java1234","123456");
	System.out.println(SecurityUser.isPermitted("user:delect")?"有次权限":"无此权限");
 }

/***
 * isPermitted判断多个权限
 */
@Test
public void test4() {
	Subject SecurityUser = shiroutil.SecurityUserlogi("shiro_permis.ini","jack","123");
	boolean []ss=SecurityUser.isPermitted("user:delete","user:select","user:update");
	System.out.println(ss[0]?"有":"无");
	System.out.println(ss[1]?"有":"无");
	System.out.println(ss[2]?"有":"无");
	}
/***
 * isPermitted判断是否拥有多个权限
 */
@Test
public void test5() {
	Subject SecurityUser = shiroutil.SecurityUserlogi("shiro_permis.ini","java1234","123456");
	System.out.println(SecurityUser.isPermittedAll("user:delete","user:select","user:update")?"有":"无");
	}
}


你可能感兴趣的:(shiro)