1 前言 :

shiro代码参考java1234网站《一头扎进shiro》视频敲出来的,原理这些请参视频 ,

点击 下载源码

2 项目结构图

3 代码


RoleTest.java

package shiro.test;import org.apache.shiro.subject.Subject;import shiro.util.ShiroUtil;public class RoleTest {public void testRole(){String configFile = "classpath:shiro_role_authority.ini";String username="jack";String password="123456";String roleName="role2";Subject currentUser = ShiroUtil.login(configFile, username, password);boolean flag = currentUser.hasRole(roleName);if(flag){System.out.println(username+"有"+roleName+"角色");}else{System.out.println(username+"没有"+roleName+"角色");}}public void testAuthority(){String configFile = "classpath:shiro_role_authority.ini";String username="jack";String password="123456";String authorityName="user:delete";Subject currentUser = ShiroUtil.login(configFile, username, password);boolean flag = currentUser.isPermitted(authorityName);if(flag){System.out.println(username+"有"+authorityName+"权限");}else{System.out.println(username+"没有"+authorityName+"权限");}}public static void main(String[] args) {RoleTest roleTest = new RoleTest();//测试是否有角色roleTest.testRole();//测试是否有权限roleTest.testAuthority();}}

ShiroUtil.java

package shiro.util;import org.apache.shiro.SecurityUtils;
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 login(String configFile,String username,String password){// 读取配置文件,初始化SecurityManager工厂Factory<SecurityManager> factory = new IniSecurityManagerFactory(configFile);// 获取securityManager实例SecurityManager securityManager = factory.getInstance();// 把securityManager绑定到SecurityUtils中SecurityUtils.setSecurityManager(securityManager);// 得到当前执行的用户Subject currentUser =  SecurityUtils.getSubject();// 创建token令牌,用户名/密码UsernamePasswordToken token = new UsernamePasswordToken(username,password);// 身份验证try{currentUser.login(token);System.out.println("身份验证成功");}catch(Exception e){e.printStackTrace();System.out.println("身份验证失败");}return currentUser;}
}

shiro_role_authority.ini

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

pom.xml

<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>shiro.leanring</groupId><artifactId>shiro</artifactId><version>0.0.1-SNAPSHOT</version><packaging>jar</packaging><properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding></properties><dependencies><!-- 添加 shiro需要一些包 开始 --><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.12</version><scope>test</scope></dependency><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>log4j</groupId><artifactId>log4j</artifactId><version>1.2.17</version></dependency><!-- 添加 shiro需要一些包 结束 --><!-- 添加数据源 开始 --><dependency><groupId>c3p0</groupId><artifactId>c3p0</artifactId><version>0.9.1.2</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>

4 结果

运行RoleTest.java ,出现

身份验证成功
jack有role2角色
身份验证成功
jack有user:delete权限

(四) shiro权限与角色相关推荐

  1. Shiro基础应用——角色和权限校验

    一.Shiro 为什么要用shiro: 1.项目中的密码是否可以明文存储? 2.是否任意访客,无论是否登录都可以访问任何功能? 3.项目中的各种功能操作,是否是所有用户都可以随意使用? 综上,当项目中 ...

  2. Shiro安全(四):Shiro权限绕过之Shiro-782

    Shiro安全(四):Shiro权限绕过之Shiro-782 0x00 前言 0x01 前置知识 0x02 漏洞环境 0x03 漏洞利用 0x04 漏洞原理 Shiro层面绕过 Spring层面绕过 ...

  3. Shiro中进行角色与权限认证流程

    场景 使用Shiro的JdbcRealm实现查询数据库进行身份认证: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/9010599 ...

  4. 一篇搞定 SpringBoot+Mybatis+Shiro 实现多角色权限管理

    初衷:我在网上想找整合springboot+mybatis+shiro并且多角色认证的博客,发现找了好久也没有找到想到的,现在自己会了,就打算写个博客分享出去,希望能帮到你. 原创不易,请点赞支持! ...

  5. spring boot结合shiro实现用户-角色-权限的控制(包含用户名密码登陆和手机号验证码登陆)

    spring boot整合shiro实现权限校验 1.首先导入项目所需jar包 <parent><groupId>org.springframework.boot</gr ...

  6. Shiro 权限框架使用总结

    我们首先了解下什么是shiro ,Shiro 是 JAVA 世界中新近出现的权限框架,较之 JAAS 和 Spring Security,Shiro 在保持强大功能的同时,还在简单性和灵活性方面拥有巨 ...

  7. SpringMVC+Shiro权限管理

    SpringMVC+Shiro权限管理 什么是权限呢?举个简单的例子: 我有一个论坛,注册的用户分为normal用户,manager用户. 对论坛的帖子的操作有这些: 添加,删除,更新,查看,回复 我 ...

  8. log中文乱码 springboot_springboot + shiro 权限注解、统一异常处理、请求乱码解决

    springboot + shiro 权限注解.统一异常处理.请求乱码解决 前篇 后台权限管理系统 20200808新版本更新 版本升级及内容优化版本,改动内容: 版本更新,springboot从1. ...

  9. shiro 权限框架

    一 shiro 是什么 shiro 是一个功能强大和易于使用的Java安全框架,为开发人员提供一个直观而全面的解决方案的认证,授权,加密,会话管理. 二 shiro 能干什么 shiro 四个主要的功 ...

最新文章

  1. 《预训练周刊》第38期: Transformer、BERT结构优化
  2. 设计模式学习笔记(十六:桥接模式)
  3. XJOI 3629 非严格次小生成树(pqq的礼物)
  4. 青海大学计算机专业在全国排名,青海大学专业排名
  5. vscode安装sftp控制文件自动上传
  6. 记一次CPU持续100%及分析方法
  7. 平衡二叉树(AVL树)-详解平衡调整
  8. 正则表达式的固化分组
  9. 水晶报表取消输入密码最后测试结果
  10. axios学习笔记(一):学习HTTP相关的技术知识点
  11. 把一个整形数组中重复的数字去掉 - 微软面试题
  12. 手把手教您安全配置Apache服务器
  13. 国产手机下乡难以撼动山寨手机农村市场
  14. 【无人机驾照】无人机驾驶员考试题库选择题1060道(带答案)
  15. Node.js:Dotenv从`.env` 文件加载环境变量的库
  16. 【NLP】第16章 Transformer驱动副驾驶的出现
  17. 在iPhone/iPad端运行DebianLinux系统【iSH-AOK】
  18. 磁共振计算机都是量子技术吗,IBM利用磁共振对单个原子成像,未来用于量子计算机...
  19. Flask - bootstrap模板使用 和 模板继承
  20. Whale帷幄 - 客户画像什么意思 客户画像精准营销管理系统

热门文章

  1. python打包exe不弹窗_Pyinstaller 打包exe教程及问题解决
  2. swagger 怎么去掉get delete_自学 Java 怎么入门?
  3. Effective Java之考虑自定义的序列化模式(七十五)
  4. Codeup-问题 A: 问题 A: 矩形嵌套
  5. 通俗易懂,CQRS概念浅析
  6. 你不知道LinkedList中的方法
  7. mixamo网站_超全面的素材网站推荐
  8. 部署LVS-DR(LVS+Keepalived)群集
  9. OpenStack的部署T版(七)——cinder模块
  10. wifi模块 服务器通讯协议,模块之间通信协议