竹笋

首页 » 问答 » 灌水 » SpringBoot极简集成Shiro
TUhjnbcbe - 2023/4/15 19:39:00
白癜风治疗有效的方法 https://m-mip.39.net/czk/mipso_4174829.html

1.前言

ApacheShiro是一个功能强大且易于使用的Java安全框架,提供了认证,授权,加密,和会话管理。

Shiro有三大核心组件:

Subject:即当前用户,在权限管理的应用程序里往往需要知道谁能够操作什么,谁拥有操作该程序的权利,shiro中则需要通过Subject来提供基础的当前用户信息,Subject不仅仅代表某个用户,与当前应用交互的任何东西都是Subject,如网络爬虫等。所有的Subject都要绑定到SecurityManager上,与Subject的交互实际上是被转换为与SecurityManager的交互。

Java从入门到项目实战java语言编程入门书零基础自学教程淘宝¥49.8¥79.8购买

SecurityManager:即所有Subject的管理者,这是Shiro框架的核心组件,可以把他看做是一个Shiro框架的全局管理组件,用于调度各种Shiro框架的服务。作用类似于SpringMVC中的DispatcherServlet,用于拦截所有请求并进行处理。

Realm:Realm是用户的信息认证器和用户的权限认证器,我们需要自己来实现Realm来自定义的管理我们自己系统内部的权限规则。SecurityManager要验证用户,需要从Realm中获取用户。可以把Realm看做是数据源。

2.数据库设计

2.1User(用户)

SETNAMESutf8mb4;SETFOREIGN_KEY_CHECKS=0;--------------------------------Tablestructureforuser------------------------------DROPTABLEIFEXISTS`user`;CREATETABLE`user`(`id`bigint(20)NOTNULLAUTO_INCREMENT,`password`varchar()CHARACTERSETutf8COLLATEutf8_general_ciNULLDEFAULTNULL,`username`varchar()CHARACTERSETutf8COLLATEutf8_general_ciNULLDEFAULTNULL,`account`varchar()CHARACTERSETutf8COLLATEutf8_general_ciNULLDEFAULTNULL,PRIMARYKEY(`id`)USINGBTREE)ENGINE=MyISAMAUTO_INCREMENT=4CHARACTERSET=utf8COLLATE=utf8_general_ciROW_FORMAT=Dynamic;--------------------------------Recordsofuser------------------------------INSERTINTO`user`VALUES(1,root,超级用户,root);INSERTINTO`user`VALUES(2,user,普通用户,user);INSERTINTO`user`VALUES(3,vip,VIP用户,vip);SETFOREIGN_KEY_CHECKS=1;

2.2Role(角色)

SETNAMESutf8mb4;SETFOREIGN_KEY_CHECKS=0;--------------------------------Tablestructureforrole------------------------------DROPTABLEIFEXISTS`role`;CREATETABLE`role`(`id`int(11)NOTNULLAUTO_INCREMENT,`role`varchar()CHARACTERSETutf8COLLATEutf8_general_ciNULLDEFAULTNULL,`desc`varchar()CHARACTERSETutf8COLLATEutf8_general_ciNULLDEFAULTNULL,PRIMARYKEY(`id`)USINGBTREE)ENGINE=MyISAMAUTO_INCREMENT=4CHARACTERSET=utf8COLLATE=utf8_general_ciROW_FORMAT=Dynamic;--------------------------------Recordsofrole------------------------------INSERTINTO`role`VALUES(1,admin,超级管理员);INSERTINTO`role`VALUES(2,user,普通用户);INSERTINTO`role`VALUES(3,vip_user,VIP用户);SETFOREIGN_KEY_CHECKS=1;

Java核心技术卷I基础知识(原书第11版)京东月销量好评率98%无理由退换京东配送官方店¥.5购买

2.3Permission(权限)

SETNAMESutf8mb4;SETFOREIGN_KEY_CHECKS=0;--------------------------------Tablestructureforpermission------------------------------DROPTABLEIFEXISTS`permission`;CREATETABLE`permission`(`id`int(11)NOTNULLAUTO_INCREMENT,`permission`varchar()CHARACTERSETutf8COLLATEutf8_general_ciNULLDEFAULTNULLCOMMENT权限名称,`desc`varchar()CHARACTERSETutf8COLLATEutf8_general_ciNULLDEFAULTNULLCOMMENT权限描述,PRIMARYKEY(`id`)USINGBTREE)ENGINE=MyISAMAUTO_INCREMENT=5CHARACTERSET=utf8COLLATE=utf8_general_ciROW_FORMAT=Dynamic;--------------------------------Recordsofpermission------------------------------INSERTINTO`permission`VALUES(1,add,增加);INSERTINTO`permission`VALUES(2,update,更新);INSERTINTO`permission`VALUES(3,select,查看);INSERTINTO`permission`VALUES(4,delete,删除);SETFOREIGN_KEY_CHECKS=1;

2.4User_Role(用户-角色)

SETNAMESutf8mb4;SETFOREIGN_KEY_CHECKS=0;--------------------------------Tablestructureforuser_role------------------------------DROPTABLEIFEXISTS`user_role`;CREATETABLE`user_role`(`id`int(11)NOTNULLAUTO_INCREMENT,`user_id`int(11)NULLDEFAULTNULL,`role_id`int(11)NULLDEFAULTNULL,PRIMARYKEY(`id`)USINGBTREE)ENGINE=MyISAMAUTO_INCREMENT=4CHARACTERSET=utf8COLLATE=utf8_general_ciROW_FORMAT=Fixed;--------------------------------Recordsofuser_role------------------------------INSERTINTO`user_role`VALUES(1,1,1);INSERTINTO`user_role`VALUES(2,2,2);INSERTINTO`user_role`VALUES(3,3,3);SETFOREIGN_KEY_CHECKS=1;

2.5Role_Permission(角色-权限)

SETNAMESutf8mb4;SETFOREIGN_KEY_CHECKS=0;--------------------------------Tablestructureforrole_permission------------------------------DROPTABLEIFEXISTS`role_permission`;CREATETABLE`role_permission`(`id`int(11)NOTNULLAUTO_INCREMENT,`role_id`int(11)NULLDEFAULTNULL,`permission_id`int()NULLDEFAULTNULL,PRIMARYKEY(`id`)USINGBTREE)ENGINE=MyISAMAUTO_INCREMENT=9CHARACTERSET=utf8COLLATE=utf8_general_ciROW_FORMAT=Fixed;--------------------------------Recordsofrole_permission------------------------------INSERTINTO`role_permission`VALUES(1,1,1);INSERTINTO`role_permission`VALUES(2,1,2);INSERTINTO`role_permission`VALUES(3,1,3);INSERTINTO`role_permission`VALUES(4,1,4);INSERTINTO`role_permission`VALUES(5,2,3);INSERTINTO`role_permission`VALUES(6,3,3);INSERTINTO`role_permission`VALUES(7,3,2);INSERTINTO`role_permission`VALUES(8,2,1);SETFOREIGN_KEY_CHECKS=1;

3.项目结构

4.前期准备

4.1导入Pom

dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-web/artifactId/dependencydependencygroupIdmysql/groupIdartifactIdmysql-connector-java/artifactId/dependencydependencygroupIdorg.mybatis.spring.boot/groupIdartifactIdmybatis-spring-boot-starter/artifactIdversion1.3.2/version/dependencydependencygroupIdorg.apache.shiro/groupIdartifactIdshiro-spring/artifactIdversion1.4.0/version/dependency

4.2application.yml

server:port:spring:application:name:lab-userdatasource:driver-class-name:

1
查看完整版本: SpringBoot极简集成Shiro