【Shiro】Springboot集成Shiro(一)

简介: 【Shiro】Springboot集成Shiro

1、技术栈

主框架:springboot

响应层:springMVC

持久层:mybatis

事务控制:jta

前端技术:easyui

2、数据库设计

【1】数据库图解

 

sh_user:用户表,一个用户可以有多个角色

sh_role:角色表,一个角色可以有多个资源

sh_resource:资源表

sh_user_role:用户角色中间表

sh_role_resource:角色资源中间表

【2】数据库脚本

sh_user

CREATE TABLE `sh_user` (

 `ID` varchar(36) NOT NULL COMMENT '主键',

 `LOGIN_NAME` varchar(36) DEFAULT NULL COMMENT '登录名称',

 `REAL_NAME` varchar(36) DEFAULT NULL COMMENT '真实姓名',

 `NICK_NAME` varchar(36) DEFAULT NULL COMMENT '昵称',

 `PASS_WORD` varchar(150) DEFAULT NULL COMMENT '密码',

 `SALT` varchar(36) DEFAULT NULL COMMENT '加密因子',

 `SEX` int(11) DEFAULT NULL COMMENT '性别',

 `ZIPCODE` varchar(36) DEFAULT NULL COMMENT '邮箱',

 `ADDRESS` varchar(36) DEFAULT NULL COMMENT '地址',

 `TEL` varchar(36) DEFAULT NULL COMMENT '固定电话',

 `MOBIL` varchar(36) DEFAULT NULL COMMENT '电话',

 `EMAIL` varchar(36) DEFAULT NULL COMMENT '邮箱',

 `DUTIES` varchar(36) DEFAULT NULL COMMENT '职务',

 `SORT_NO` int(11) DEFAULT NULL COMMENT '排序',

 `ENABLE_FLAG` varchar(18) DEFAULT NULL COMMENT '是否有效',

 PRIMARY KEY (`ID`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=COMPACT COMMENT='用户表';


sh_role

CREATE TABLE `sh_role` (

 `ID` varchar(36) NOT NULL COMMENT '主键',

 `ROLE_NAME` varchar(36) DEFAULT NULL COMMENT '角色名称',

 `LABEL` varchar(36) DEFAULT NULL COMMENT '角色标识',

 `DESCRIPTION` varchar(200) DEFAULT NULL COMMENT '角色描述',

 `SORT_NO` int(36) DEFAULT NULL COMMENT '排序',

 `ENABLE_FLAG` varchar(18) DEFAULT NULL COMMENT '是否有效',

 PRIMARY KEY (`ID`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=COMPACT COMMENT='用户角色表';

sh_resource

CREATE TABLE `sh_resource` (

 `ID` varchar(36) NOT NULL COMMENT '主键',

 `PARENT_ID` varchar(36) DEFAULT NULL COMMENT '父资源',

 `RESOURCE_NAME` varchar(36) DEFAULT NULL COMMENT '资源名称',

 `REQUEST_PATH` varchar(200) DEFAULT NULL COMMENT '资源路径',

 `LABEL` varchar(200) DEFAULT NULL COMMENT '资源标签',

 `ICON` varchar(20) DEFAULT NULL COMMENT '图标',

 `IS_LEAF` varchar(18) DEFAULT NULL COMMENT '是否叶子节点',

 `RESOURCE_TYPE` varchar(36) DEFAULT NULL COMMENT '资源类型',

 `SORT_NO` int(11) DEFAULT NULL COMMENT '排序',

 `DESCRIPTION` varchar(200) DEFAULT NULL COMMENT '描述',

 `SYSTEM_CODE` varchar(36) DEFAULT NULL COMMENT '系统code',

 `IS_SYSTEM_ROOT` varchar(18) DEFAULT NULL COMMENT '是否根节点',

 `ENABLE_FLAG` varchar(18) DEFAULT NULL COMMENT '是否有效',

 PRIMARY KEY (`ID`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=COMPACT COMMENT='资源表';


sh_role_resource

CREATE TABLE `sh_role_resource` (

 `ID` varchar(36) NOT NULL,

 `ENABLE_FLAG` varchar(18) DEFAULT NULL,

 `ROLE_ID` varchar(36) DEFAULT NULL,

 `RESOURCE_ID` varchar(36) DEFAULT NULL,

 PRIMARY KEY (`ID`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=COMPACT COMMENT='角色资源表';

sh_user_role

CREATE TABLE `sh_user_role` (

 `ID` varchar(36) NOT NULL,

 `ENABLE_FLAG` varchar(18) DEFAULT NULL,

 `USER_ID` varchar(36) DEFAULT NULL,

 `ROLE_ID` varchar(36) DEFAULT NULL,

 PRIMARY KEY (`ID`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=COMPACT COMMENT='用户角色表';

3、项目骨架

 

4、ShiroDbRealm定义

【1】图解

 

【2】原理分析

(1)、ShiroDbRealmImpl继承ShiroDbRealm向上继承AuthorizingRealm,ShiroDbRealmImpl实例化时会创建密码匹配器HashedCredentialsMatcher实例,HashedCredentialsMatcher指定hash次数与方式,交于AuthenticatingRealm

(2)、调用login方法后,最终调用doGetAuthenticationInfo(AuthenticationToken authcToken)方法,拿到SimpleToken的对象,调用UserBridgeService的查找用户方法,把ShiroUser对象、密码和salt交于SimpleAuthenticationInfo去认证

(3)、访问需要鉴权时,调用doGetAuthorizationInfo(PrincipalCollection principals)方法,然后调用UserBridgeService的授权验证


相关文章
|
19天前
|
XML Java API
Spring Boot集成MinIO
本文介绍了如何在Spring Boot项目中集成MinIO,一个高性能的分布式对象存储服务。主要步骤包括:引入MinIO依赖、配置MinIO属性、创建MinIO配置类和服务类、使用服务类实现文件上传和下载功能,以及运行应用进行测试。通过这些步骤,可以轻松地在项目中使用MinIO的对象存储功能。
|
21天前
|
消息中间件 Java Kafka
什么是Apache Kafka?如何将其与Spring Boot集成?
什么是Apache Kafka?如何将其与Spring Boot集成?
53 5
|
24天前
|
消息中间件 Java Kafka
Spring Boot 与 Apache Kafka 集成详解:构建高效消息驱动应用
Spring Boot 与 Apache Kafka 集成详解:构建高效消息驱动应用
36 1
|
1月前
|
XML Java 数据库连接
SpringBoot集成Flowable:打造强大的工作流管理系统
在企业级应用开发中,工作流管理是一个核心组件,它能够帮助我们定义、执行和管理业务流程。Flowable是一个开源的工作流和业务流程管理(BPM)平台,它提供了强大的工作流引擎和建模工具。结合SpringBoot,我们可以快速构建一个高效、灵活的工作流管理系统。本文将探讨如何将Flowable集成到SpringBoot应用中,并展示其强大的功能。
191 1
|
2月前
|
安全 Java 数据库
shiro学习一:了解shiro,学习执行shiro的流程。使用springboot的测试模块学习shiro单应用(demo 6个)
这篇文章是关于Apache Shiro权限管理框架的详细学习指南,涵盖了Shiro的基本概念、认证与授权流程,并通过Spring Boot测试模块演示了Shiro在单应用环境下的使用,包括与IniRealm、JdbcRealm的集成以及自定义Realm的实现。
49 3
shiro学习一:了解shiro,学习执行shiro的流程。使用springboot的测试模块学习shiro单应用(demo 6个)
|
24天前
|
消息中间件 监控 Java
您是否已集成 Spring Boot 与 ActiveMQ?
您是否已集成 Spring Boot 与 ActiveMQ?
47 0
|
2月前
|
Java API Apache
Springboot+shiro,完整教程,带你学会shiro
这篇文章提供了一个完整的Apache Shiro与Spring Boot结合使用的教程,包括Shiro的配置、使用以及在非Web和Web环境中进行身份验证和授权的示例。
97 2
Springboot+shiro,完整教程,带你学会shiro
|
1月前
|
JSON Java API
springboot集成ElasticSearch使用completion实现补全功能
springboot集成ElasticSearch使用completion实现补全功能
40 1
|
2月前
|
前端开发 Java Apache
Springboot整合shiro,带你学会shiro,入门级别教程,由浅入深,完整代码案例,各位项目想加这个模块的人也可以看这个,又或者不会mybatis-plus的也可以看这个
本文详细讲解了如何整合Apache Shiro与Spring Boot项目,包括数据库准备、项目配置、实体类、Mapper、Service、Controller的创建和配置,以及Shiro的配置和使用。
509 1
Springboot整合shiro,带你学会shiro,入门级别教程,由浅入深,完整代码案例,各位项目想加这个模块的人也可以看这个,又或者不会mybatis-plus的也可以看这个
|
1月前
|
XML 存储 Java
SpringBoot集成Flowable:构建强大的工作流引擎
在企业级应用开发中,工作流管理是核心功能之一。Flowable是一个开源的工作流引擎,它提供了BPMN 2.0规范的实现,并且与SpringBoot框架完美集成。本文将探讨如何使用SpringBoot和Flowable构建一个强大的工作流引擎,并分享一些实践技巧。
131 0
下一篇
DataWorks