106 lines
1.7 KiB
Markdown
106 lines
1.7 KiB
Markdown
---
|
||
title: 通用权限管理项目
|
||
date: 2025-02-21
|
||
categories: [工作, 项目]
|
||
tags: [项目]
|
||
---
|
||
|
||
|
||
## 前端
|
||
|
||
- 封装菜单、菜单项目,动态路由
|
||
- 封装http请求
|
||
- 封装弹窗
|
||
- 封装提示框
|
||
|
||
数据持久化插件
|
||
|
||
[开始 | Pinia Plugin Persistedstate](https://prazdevs.github.io/pinia-plugin-persistedstate/zh/guide/)
|
||
|
||
动态路由
|
||
|
||

|
||
|
||
动态菜单
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
## 后端
|
||
|
||
角色
|
||
|
||
- 简单的增删改查
|
||
|
||
用户
|
||
|
||
- 简单的增删改查
|
||
- 和角色的一个联查
|
||
|
||
菜单
|
||
|
||
- 简单的增删改查
|
||
- 将菜单进行手动拼接成Tree
|
||
|
||
## 简单的增删改查
|
||
|
||
### 增
|
||
|
||
- 将数据库表映射成对象
|
||
- 编写通用增加接口: int add(T t)
|
||
- 动态sql
|
||
|
||
### 改
|
||
|
||
- 编写通用修改接口: int edit(T t)
|
||
- 动态Sql
|
||
|
||
### 删
|
||
|
||
- 通过id删除:int delete(int id)
|
||
|
||
### 查
|
||
|
||
- 普通查询
|
||
- 分页:pagehelper
|
||
|
||
|
||
|
||
对于菜单分配的设计问题
|
||
|
||
角色查看分配菜单
|
||
|
||
方案一(role_id)
|
||
|
||
- 返回角色对应的菜单id(表示选中)
|
||
- 直接返回==所有菜单==(树结构)
|
||
- 优点:简单
|
||
- 缺点:用户可以看到所有权限,并可以进行修改
|
||
|
||
方案二(user_id,role_id)
|
||
|
||
- 返回角色对应的菜单id(表示选中)
|
||
- 返回==用户对应的菜单====(树结构)==
|
||
- 优点:用户只可以看见自己的权限,并且修改也只可以在此基础上
|
||
- 缺点:需要设置是否是为管理员字段(保证至少一个显示完整菜单)
|
||
|
||
## 后端进阶
|
||
|
||
- 验证码图片生成
|
||
|
||
|
||
|
||
|
||
|
||
持久化数据
|
||
|
||
- 持久化token、持久化userId、userName
|
||
|
||
|
||
|
||
### SpringSecurity
|
||
|
||
基于一种维持会话的方式(session、jwt)进行防止直接访问后端请求 |