rbac 设计

// 角色访问控制

// 给用户赋予角色 角色对应功能

// 一个用户关联多个角色 一个角色关联多个功能

// 设计表结构

// 点击查看ER图表===选择模型===新建模型

// 用户表base_user

// 按钮权限 和菜单权限

// permission

// 关联

// 创建关联表

//模型 文件 导出sql

// 或者直接生成到数据库中

// 新建数据库;

// 模型点文件 同步到数据库

// 多对多的才会用关联表

//permission 用户管理下面 有两个按钮权限

//https://eggjs.org/zh-cn/intro/quickstart.html

cnpm init egg --type=ts

// 类似postman的工具

// https://insomnia.rest/

// passport 用来鉴权的

// egg-passport

npm i --save egg-passport egg-passport-local

// 关闭csrf跨站攻击

// umi

//https://github.com/umijs/create-umi

// umi ui

// 需要后端鉴权

// 关联表

// SELECT role.* FROM role_user INNER JOIN role ON role_user.role_id=role.id WHERE role_user.user_id=1;

// 角色处理有两种选择

// 路径的角色 属于哪个角色在前端配置的

// 当前用户有哪些角色由后端配

//第二种是动态路由 由后端返回的一个动态路由表

//https://pro.ant.design/docs/authority-management-cn

// 这里的获取方式有几种,像 pro 现在这样从 config 中传值,也可以通过 http 请求从服务端获取,甚至本地的 json 文件加载也可以。routerData 是一个 json 数组。获取之后只需返回类似格式的 json 即可。

//用户篡改权限的话 是有问题的 所以需要后端拦截 比较接口api

// 角色用户表关联 角色权限表

SELECT permission.KEY FROM role_user INNER JOIN role_permission ON role_user.role_id=role_permission.role_id

INNER JOIN permission ON role_permission.permission_id=permission.id

WHERE role_user.user_id=1;

///server/api/user/add

// 前端隐藏判断条件被篡改 还可以后端控制接口的返回值 做一层拦截

// 即使按钮被篡改显示出来了 真正发请求的时候 还是被后端拦截了

// 按钮的显示控制权限 用authority包裹一下 就可以 传递admin 为指定的角色

// 点击删除按钮的时候发送删除请求的时候 后端做一层校验 看下是否有删除的权限

// 登录接口给到用户权限

router.post('/api/login/account',localStrategy)

// 对接口的中间件做接口拦截处理

router.post('/api/user/add',auth,controller.user.addUser)

router.get('/api/loginCallback',controller.user.loginCallback)

发布了363 篇原创文章 · 获赞 32 · 访问量 15万+

猜你喜欢

转载自blog.csdn.net/gwdgwd123/article/details/104516721