数据权限-yudao
数据权限相关代码在 yudao-framework/yudao-spring-boot-starter-biz-data-permission模块中。
类
说明
功能
DataPermissionDatabaseInterceptor
数据权限 sql 拦截器
拦截所有 sql,追加数据权限过滤条件
DataPermission
数据权限注解
默认已开启数据权限,可用在类或者方法上
DataScopeEnum
数据范围枚举类
指定有哪些数据权限类型
DataPermissionRule
数据权限规则接口
定义数据权限规则的类都应继承该接口
DeptDataPermissionRule
基于部门的数据权限规则实现
生成数据过滤语句
DataPermissionRuleFactoryImpl
工厂类
提供已定义的所有规则
DataPermissionConfiguration
system 模块的数据权限 Configuration
为DeptDataPermissionRule设置表名与字段
项目中定义了5种类型的数据权限
12345678910p ...
数据权限-ruoyi-plus
在MyBatis plus的配置类中,第一个拦截器是 PlusDataPermissionInterceptor
123456789101112public class MybatisPlusConfig { @Bean public MybatisPlusInterceptor mybatisPlusInterceptor() { MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor(); // 数据权限拦截器,需要加在首位,主要是为了在分页插件前面。这个是 MyBatis Plus 的规定 interceptor.addInnerInterceptor(new PlusDataPermissionInterceptor()); ... // 其他拦截器 return interceptor; }}
这是项目定义的数据权限拦截器,用于拦截所有的sql,然后在其中添加数据权限过滤条件。 ...
Springboot 插件集成
Mybatis-plusMybatis-Plus是在 Mybatis的基础上进行扩展,只做增强不做改变,可以兼容 Mybatis原生的特性。同时支持通用CRUD操作、多种主键策略、分页、性能分析、全局拦截等。极大帮助我们简化开发工作。
添加整合依赖
123456<!-- mybatis-plus增强CRUD --><dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> <version>3.4.2</version></dependency>
在文件 application.yml中,修改mybatis配置为mybatis-plus
123mybatis-plus: mapper-locations: classpath*:mapper/**/*Mapper.xml ...
Spring Security
版本:
springboot2.7
登录仅仅只是在pom文件中添加springboot security依赖之后,前端就不能再和后端交互了,出现了跨域问题。
想要通过security实现登录,需更改三个地方。
用户校验security默认使用了InMemoryUserDetailsManager来对用户密码进行校验,它使用的是自己生成的一份用户名和密码,而我们想要其通过用户名从数据库中查询用户的密码,然后和前端发来的密码做匹配。为了完成此功能,需要创建一个继承UserDetailsService接口的类,重写loadUserByUsername方法。
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647@Servicepublic class UserDetailsServiceImpl implements UserDetailsService{ private static final Logger log = LoggerFactory.get ...
RuoYi-Vue -- 权限篇
“vue-element-admin项目中的页面权限是写死预设的,而很多公司的需求是每个页面的权限是动态配置的。如:你可以在后台通过一个 tree 控件或者其它展现形式给每一个页面动态配置权限,之后将这份路由表存储到后端。当用户登录后得到 roles,前端根据roles 去向后端请求可访问的路由表,从而动态生成可访问页面,之后就是 router.addRoutes 动态挂载到 router 上。多了一步将后端返回路由表和本地的组件映射到一起。就是说:将角色对应的路由表存在数据库中,前端通过用户角色去从数据库中取得路由表。”
参考:
环境部署 | 文档
若依前后端分离版,通俗易懂,快速上手 | bilibili
下载启动Ui是前端部分,其他是后端部分,启动类在admin中。common,framework,generator,quartz,system服务于admin。
用idea或者vscode单独打开Ui文件夹。
配置数据库mysql,:创建数据库 ry并导入数据脚本 ry_2021xxxx.sql,quartz.sql
后端:启动类 com.ruoyi.RuoYiApplicati ...
Springboot项目 -- 多模块
多模块在实际的springboot项目时,一般不会直接在新建的springboot工程中写逻辑代码,而是再新建Maven模块作为子模块,在子模块中去写代码。比如ruoyi-vue-pro项目:
图中粗字体的文件夹即表示一个子模块。
删掉父工程的src文件夹
在某个子模块中添加启动项
pom.xml配置文件为了让各个子模块和父工程之间联系起来,需要利用pom.xml文件。
父工程的pom.xml文件:设置打包类型、管理依赖版本和公共依赖1234567891011121314151617181920212223242526272829303132 <!-- 打包类型 --><packaging>pom</packaging><!-- 子模块有哪些 --><modules> <module>yudao-dependencies</module> <module>yudao-framework</module> <module>yudao-serv ...
vue-element-admin -- 权限篇
项目中权限的实现方式:
1 创建 vue 实例的时候将 vue-router 挂载,但这个时候 vue-router只挂载一些登录或者不用权限的公用的页面。
2 当用户登录后,获取用 role,将 role 和路由表每个页面的需要的权限作比较,生成最终用户可访问的路由表。
3 调用 router.addRoutes(store.getters.addRouters) 添加用户可访问的路由。
4 使用 vuex管理路由表,根据 vuex 中可访问的路由渲染侧边栏组件。
路由路由代码在/src/router/index.js中,有两种:
constantRoutes: 代表那些不需要动态判断权限的路由,如登录页、404、等通用页面。
asyncRoutes: 代表那些需求动态判断权限并通过 addRoutes 动态添加的页面。
代码中的roles标签记录了可访问此路由的所有角色。如代码中的‘/permission’路由,只有‘admin’或’editor’的角色可以访问。
123456789101112//index.js{ path: '/permissio ...
Springboot3 + vue-element-admin 登录实现
后端实现环境要求:
A Java™ Development Kit (JDK): We recommend BellSoft Liberica JDK version 17.
IDE:IntelliJ IDEA(ultimate)
MySql
新建SpringBoot项目打开Idea,FIle -> New -> Project -> Spring Initializr。设置项目名,SDK等,点击下一步,选择Web -> Spring Web,点击Finish。
)
SpringBoot项目大概分为四层:
(1)DAO层:包括XxxMapper.java(数据库访问接口类),XxxMapper.xml(数据库链接实现);(有人喜欢命名为Dao,有人喜欢用Mapper)
(2)Bean层:model层,映射实体类。存放从数据库中取出的数据的对象称为Model Object(MO);
(3)Service层:也叫服务层,业务层,包括XxxService.java(业务接口类),XxxServiceImpl.java(业务实现类);(可以在service文件夹下新 ...
Kaggle入门比赛 - 笔记
Aerial Cactus identification
比赛地址:https://www.kaggle.com/c/aerial-cactus-identification
DescriptionTo assess the impact of climate change on Earth’s flora and fauna, it is vital to quantify how human activities such as logging, mining, and agriculture are impacting our protected natural areas. Researchers in Mexico have created the VIGIA project, which aims to build a system for autonomous surveillance of protected areas. A first step in such an effort is the ability to recognize the vegetation ...
UE4基础-蓝图基础
快捷键
按住B,按下左键
Branch
按住p,按下左键
Event beginplay
按住D,按下左键
Delay
按住ctrl,拖动变量至图表中
get virable
按住alt,拖动变量至图表中
set virable
选择结点:ctrl + w
会复制一份到鼠标所在地
API
Select:return the option at index, (first option is indexed at 0)
Sequence:Executes a series of pins in order
Branch:if Condition is true, execution goes to True, otherwise it goes to False
获取数组中的值, GET:Given an array and an index, returns item(copy or ref)
FlipFlop:Allternates between A and B outputs, Starting with A