【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的授权验证


相关文章
|
安全 Java 数据库
第16课:Spring Boot中集成 Shiro
第16课:Spring Boot中集成 Shiro
1192 0
|
前端开发
SpringBoot2.3.1集成Knife4j接口文档
SpringBoot2.3.1集成Knife4j接口文档
1258 44
|
JSON 分布式计算 大数据
springboot项目集成大数据第三方dolphinscheduler调度器
springboot项目集成大数据第三方dolphinscheduler调度器
775 3
|
缓存 JSON 前端开发
第07课:Spring Boot集成Thymeleaf模板引擎
第07课:Spring Boot集成Thymeleaf模板引擎
1009 0
第07课:Spring Boot集成Thymeleaf模板引擎
|
Java 关系型数据库 MySQL
springboot项目集成dolphinscheduler调度器 实现datax数据同步任务
springboot项目集成dolphinscheduler调度器 实现datax数据同步任务
1087 2
|
分布式计算 Java 大数据
springboot项目集成dolphinscheduler调度器 可拖拽spark任务管理
springboot项目集成dolphinscheduler调度器 可拖拽spark任务管理
591 2
|
缓存 安全 Java
Shiro简介及SpringBoot集成Shiro(狂神说视频简易版)
Shiro简介及SpringBoot集成Shiro(狂神说视频简易版)
979 7
|
缓存 Java 数据库
SpringBoot集成Ehcache缓存使用指南
以上是SpringBoot集成Ehcache缓存的基本操作指南,帮助你在实际项目中轻松实现缓存功能。当然,Ehcache还有诸多高级特性,通过学习和实践,你可以更好地发挥它的威力。
1016 20
|
分布式计算 大数据 Java
springboot项目集成大数据第三方dolphinscheduler调度器 执行/停止任务
springboot项目集成大数据第三方dolphinscheduler调度器 执行/停止任务
340 0

热门文章

最新文章