工具idea

先看看数据库

shiro_role_permission

数据

shiro_user

shiro_user_role

数据

我们先看一下目录结构

首先

jar包引入 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>geyaoshiro</groupId><artifactId>geyaoshiro</artifactId><version>1.0-SNAPSHOT</version><packaging>war</packaging><name>geyaoshiro Maven Webapp</name><!-- FIXME change it to the project's website --><url>http://www.example.com</url><properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><maven.compiler.source>1.7</maven.compiler.source><maven.compiler.target>1.7</maven.compiler.target></properties><dependencies><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.11</version><scope>test</scope></dependency><dependency><groupId>org.apache.shiro</groupId><artifactId>shiro-core</artifactId><version>1.2.3</version></dependency><dependency><groupId>org.slf4j</groupId><artifactId>slf4j-log4j12</artifactId><version>1.6.1</version></dependency><dependency><groupId>org.slf4j</groupId><artifactId>slf4j-log4j12</artifactId><version>1.6.1</version></dependency><dependency><groupId>mysql</groupId><artifactId>mysql-connecttor-java</artifactId><version>5.1.32</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-jdbc</artifactId><version>4.3.11.RELEASE</version></dependency><dependency><groupId>com.mchange</groupId><artifactId>c3p0</artifactId><version>0.9.5.2</version></dependency></dependencies><build><finalName>geyaoshiro</finalName><pluginManagement><!-- lock down plugins versions to avoid using Maven defaults (may be moved to parent pom) --><plugins><plugin><artifactId>maven-clean-plugin</artifactId><version>3.1.0</version></plugin><!-- see http://maven.apache.org/ref/current/maven-core/default-bindings.html#Plugin_bindings_for_war_packaging --><plugin><artifactId>maven-resources-plugin</artifactId><version>3.0.2</version></plugin><plugin><artifactId>maven-compiler-plugin</artifactId><version>3.8.0</version></plugin><plugin><artifactId>maven-surefire-plugin</artifactId><version>2.22.1</version></plugin><plugin><artifactId>maven-war-plugin</artifactId><version>3.2.2</version></plugin><plugin><artifactId>maven-install-plugin</artifactId><version>2.5.2</version></plugin><plugin><artifactId>maven-deploy-plugin</artifactId><version>2.8.2</version></plugin></plugins></pluginManagement></build>
</project>

这一部分,我是自己手动找本地包加入的

shiro-mysql.ini

[main]
dataSource=org.springframework.jdbc.datasource.DriverManagerDataSource
dataSource.driverClassName=com.mysql.jdbc.Driver
dataSource.url=jdbc:mysql://localhost:3306/geyao?serverTimezone=GMT%2B8
dataSource.username=root
dataSource.password=123jdbcRealm=org.apache.shiro.realm.jdbc.JdbcRealmjdbcRealm.permissionsLookupEnabled=true
jdbcRealm.dataSource=$dataSource#重写sql语句
jdbcRealm.authenticationQuery=select PASSWORD from SHIRO_USER where USER_NAME=?jdbcRealm.userRolesQuery=select ROLE_NAME from SHIRO_USER_ROLE where USER_NAME=?jdbcRealm.permissionsQuery=select PERM_NAME from SHIRO_ROLE_PERMISSION where ROLE_NAME=?securityManager.realms=$jdbcRealm

shiroTest

package com.geyao.shiro.test;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 ShiroTest {public static void main(String[] args) {// 1、获取SecurityManager工厂,此处使用Ini配置文件初始化SecurityManagerFactory<SecurityManager> factory=new IniSecurityManagerFactory("classpath:shiro-mysql.ini");// 2、得到SecurityManager实例 并绑定给SecurityUtilsSecurityManager securityManager = factory.getInstance();SecurityUtils.setSecurityManager(securityManager);// 3、得到Subject及创建用户名/密码身份验证Token(即用户身份/凭证)Subject subject = SecurityUtils.getSubject();UsernamePasswordToken token = new UsernamePasswordToken("admin@shiro.com", "admin");//UsernamePasswordToken token2 = new UsernamePasswordToken("password", "wei");try {// 4、登录,即身份验证subject.login(token);if(subject.hasRole("admin")){System.out.println("有admin角色");}else{System.out.println("没有admin角色");}if(subject.isPermitted("del")){System.out.println("有delete权限");}else{System.out.println("没有delete权限");}//subject.login(token2);} catch (AuthenticationException e) {e.printStackTrace();System.out.println("登录失败 ");// 5、身份验证失败}// 6、退出subject.logout();}
}

运行结果

shiro学习(7):shiro连接数据库 方式二相关推荐

  1. Shiro学习--Apache Shiro Architecture(Shiro架构)

    Apache Shiro Architecture 参考 http://shiro.apache.org/architecture.html 本文有点翻译的意思,是为了梳理Shiro的知识而做的Shi ...

  2. Shiro学习之Shiro授权的内部处理机制(六)

    1.在应用程序中调用授权验证方法(Subject的isPermitted*或hasRole*等) 2.Sbuject的实例通常是DelegatingSubject类(或子类)的实例对象,在认证开始时, ...

  3. Shiro学习记录(详细)

    文章目录 Shiro学习记录 shiro核心组件 Spring Boot 整合 Shiro Shiro 整合 Thymeleaf Shiro学习记录 什么是 Shiro 官网:http://shiro ...

  4. shiro学习(11):servelet实现权限认证二

    工具idea 先看看数据库 shiro_role_permission 数据 shiro_user shiro_user_role 数据 在pom.xml里面添加 <dependency> ...

  5. SpringBoot整合Shiro学习(上)

    SpringBoot整合Shiro(上) 基于[编程不良人]2020最新版Shiro教程,整合SpringBoot项目实战教程 哔哩哔哩链接:https://www.bilibili.com/vide ...

  6. shiro 学习(一)

    title: shiro学习(一) date: 2020-11-13 tags: spring springboot shiro categories: spring springboot shiro ...

  7. shiro学习笔记(三)知识整合

    参考 小D课堂 二当家小D老师的笔记 小滴课堂官网:https://xdclass.net/#/index 官网 第1章 Shiro权限实战课程介绍 第1集 Shiro权限实战课程介绍 简介:讲解为什 ...

  8. Shiro学习笔记_02:shiro的认证+shiro的授权

    Shiro 学习笔记 本文基于B站UP主[编程不良人]视频教程[2020最新版Shiro教程,整合SpringBoot项目实战教程]进行整理记录,仅用于个人学习交流使用. 视频链接:https://w ...

  9. shiro 学习笔记

    1. 权限管理 1.1 什么是权限管理? 权限管理实现对用户访问系统的控制,按照安全规则或者安全策略,可以控制用户只能访问自己被授权的资源 权限管理包括用户身份认证和授权两部分,简称认证授权 1.2 ...

最新文章

  1. python百度地图api经纬度_从百度地图API接口批量获取地点的经纬度
  2. java 怎么比较两个日期_如何在Java中比较两个日期?
  3. 计算机专业汇报与接口,计算机接口设计实验总结.doc
  4. 《Deep Learning Methods for Reynolds-Averaged Navier-Stokes Simulations of Airfoil Flows》
  5. 解决Eclipse编译web项目失败问题
  6. python排序算法的时间复杂度_Python算法的时间复杂度和空间复杂度(实例解析)
  7. STM32开发环境搭建
  8. LaTeX tabular表格环境与命令
  9. Mysql官方接口中文解释
  10. 关于计算机取代学校的英语作文,关于网络教室将取代传统的教室英语作文
  11. tmall.product.schema.get( 产品信息获取schema获取 ),淘宝店铺上传商品API接口,淘宝商品发布接口,淘宝商品上传API接口,店铺上传接口,oAuth2.0接口
  12. 几种常见的软件开发模型分析
  13. python高考考题_假如高考考python编程,这些题目你会几个呢?
  14. 定企业生死的中台,到底长啥样?
  15. MySQL懒查询_MySQL 5.7查询sys.schema_redundant_indexes居然慢如蜗牛...
  16. openssl生成RSA格式及pkcs1与pkcs8格式互相转换
  17. Springboot毕设项目咖啡馆管理系统4598u(java+VUE+Mybatis+Maven+Mysql)
  18. java将图片的url转换成File,File转换成二进制流byte
  19. Go语言环境配置 Sublime Text + GoSublime+ gocode + MarGo组
  20. WorldFirst能用于PayPal提现吗?怎么操作?

热门文章

  1. Win7启动修复MBR(Win7+Linux删除Linux后进入grub rescue的情况)
  2. Envi 4.7 破解安装及下载(转)
  3. c语言掌握常用函数,c语言一些常用函数.pdf
  4. 大数据实验报告总结体会_建设大数据中台架构思考与总结
  5. python提取hbase数据_详解python操作hbase数据的方法介绍
  6. java判断读到末尾_IO流如何判断读取到了流的结尾,程序中以-1来判断,是流中写入一个EOF表示流结束吗,底层实现呢?...
  7. linux语言的说明顺序有哪些,(linux常用头文件详解.doc
  8. java邮件实例_java邮件小实例
  9. 机器学习的练功心法(三)——特征工程
  10. Workbox-Window v4.x 中文版