1.搭建shiro环境(*)

  idea2018.2、maven3.5.4、jdk1.8

 项目结构:

  

  pom.xml:  

<?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>org.zyu</groupId>
<artifactId>idea_shiro_demo03</artifactId>
<version>1.0-SNAPSHOT</version> <dependencies>
<dependency>
<groupId>org.apache.shiro</groupId>
<artifactId>shiro-core</artifactId>
<version>1.2.4</version>
</dependency> <dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>1.7.12</version>
</dependency> <dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.1.10</version>
</dependency> <dependency>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
<version>1.2</version>
</dependency> <dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.37</version>
</dependency>
</dependencies> </project>

 

shiro_role_permission.ini 

[users]
superbird=123456,system
bigbird=123,role1,role2 [roles]
system=InRoom:select,InRoom:insert,InRoom:xiaoFei,InRoom:update,VIP:select,VIP:gaunli,VIP:add
role1=InRoom:xiaoFei
role2=VIP:select,VIP:add

【users】

用户名=密码,角色

【roles】

角色=对应的权限

ShiroUtil(封装对应的身份验证方法  --- 只有先登录之后才能判断权限):

public class ShiroUtil {

    public static Subject login(String configPath,String username,String password) {
//找资源:ctrl+shift+n
//核心类:SecurityManager
Factory<SecurityManager> factory = new IniSecurityManagerFactory(configPath);
SecurityManager securityManager = factory.getInstance();
//当前用户Subject
SecurityUtils.setSecurityManager(securityManager);
Subject user = SecurityUtils.getSubject();
//模拟用户输入用户名与密码
UsernamePasswordToken token = new UsernamePasswordToken(username,password);
try {
user.login(token);
System.out.println("登录成功");
} catch (AuthenticationException e) {
System.out.println("登录失败");
}
return user;
}
}

判断用户所拥有的角色(一个用户对应的角色可以是一个,也可以是多个)

public class ShiroDemo {

    public static void main(String[] args) {
Subject user = ShiroUtil.login("classpath:shiro_role_permission.ini", "bigbird", "123");
//判断用户是否拥有某个角色
boolean flag1 = user.hasRole("system");
// System.out.println("flag1="+flag1);
List<String> roles = Arrays.asList("role1", "role2","system");
boolean[] flags = user.hasRoles(roles);
System.out.println(Arrays.toString(flags));
}
}

判断用户是否拥有某个具体的权限

public class ShiroDemo01 {

    public static void main(String[] args) {
//判断bigbird=123的用户是否具有某个具体的权限
Subject user = ShiroUtil.login("classpath:shiro_role_permission.ini", "bigbird", "123");
boolean flag1 = user.isPermitted("InRoom:xiaoFei");
//System.out.println("flag1="+flag1); //判断某个用户是否同时具有多个权限
boolean[] flags = user.isPermitted("InRoom:xiaoFei", "InRoom:update");
// System.out.println("flags="+ Arrays.toString(flags)); try {
user.checkPermission("InRoom:xiaoFei");
System.out.println("bigbird有消费记录权限");
} catch (AuthorizationException e) {
System.out.println("bigbird有没有消费记录权限");
}
}
}

最新文章

  1. Java的内部类
  2. android 4.4.2 开发环境
  3. sql中文字符串获取拼音首字母
  4. LA 4670 (AC自动机 模板题) Dominating Patterns
  5. 网络IPC:套接字
  6. MySQL的复制原理及配置
  7. python解决汉诺塔问题
  8. 用 OneAPM Cloud Insight 监控 Docker 性能
  9. 如何在JS中获取Request方法
  10. MySql定位执行效率较低的SQL语句
  11. requirejs 打包参数
  12. hdu2030java
  13. windows 编程 —— 消息与参数(定时器、初始化消息、改变大小)
  14. Tomcat:Can&#39;t load IA 32-bit .dll on a AMD 64-bit platform问题的解决
  15. 深度爬取之rules
  16. Ruby类
  17. Matlab - 各种函数学习
  18. python基础之Day14
  19. 微信小程序-两个input叠加,多次点击字体变粗或闪动
  20. Oracle数据文件改名

热门文章

  1. Go标准库Context
  2. linux目录化结构
  3. vertical-align之见
  4. 戈多编程-小谈sql语句的优化分析
  5. Stock Charts
  6. MacOS 导入MySQLdb 报错解决思路(解决ImportError: this is MySQLdb version (1, 2, 3, &#39;beta&#39;, 1), but _mysql is version (1, 2, 5, &#39;final&#39;, 1))
  7. flask 微电影网站
  8. 面试官,Java8 JVM内存结构变了,永久代到元空间
  9. metasploit(MSF)渗透平台命令大全
  10. PHP array_filter