--- title: 通用权限管理项目 date: 2025-02-21 categories: [工作, 项目] tags: [项目] --- ## 前端 - 封装菜单、菜单项目,动态路由 - 封装http请求 - 封装弹窗 - 封装提示框 数据持久化插件 [开始 | Pinia Plugin Persistedstate](https://prazdevs.github.io/pinia-plugin-persistedstate/zh/guide/) 动态路由 ![image 44.png](通用权限管理项目/image44.png) 动态菜单 ## 后端 角色 - 简单的增删改查 用户 - 简单的增删改查 - 和角色的一个联查 菜单 - 简单的增删改查 - 将菜单进行手动拼接成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)进行防止直接访问后端请求