DavidNineRoc
2018-09-25 15:22:04 +08:00
memus
id name parent_id
1 客服控制台页面
2 工单管理 1
3 客户管理 1
users(单角色,多角色也差不多)
id name role_id
1 david 1
2 gps 2
roles
id name
1 admin
2 guest
permissions
id url method action menu_id
1 /customers get R 3
2 /customers post C 3
3 /customers patch U 3
4 /orders post R 2
role_permission
role_id permission_id
1 1
1 2
1 3
// 实际菜单根据用户拥有的 menus 渲染。当用户点击菜单才渲染权限
// 如果点了客户管理前端会传 menu_id = 3
这时候得到 permission=1,2,3 这三条记录,就知道这个页面有这三个权限,然后通过当前登录用户,角色,权限关联。
这时候如果是 david 用户在 /customers 页面就有 CUR 权限
而 gps 用户在 /customers 页面没有任何权限,这都只是给前端显示的
// 而后端需要再建一个中间件验证权限,用户请求,根据页面的 url 和 method 得到唯一的 permission, 如果为 null,代表当前 url 不用验证权限,如果有记录,判断用户是否有这个权限,没有抛出异常,有,请求就通过