一枚小前端記錄下最近設計的簡易RBAC權限
先放一下表結構
user_info
app.model.UserInfo.belongsTo(app.model.Role,{
foreignKey: 'role_id',
targetKey: 'role_value'
});
外鍵role_id 關聯 role.role_value
role
menu
app.model.Menu.hasMany(app.model.Permission,{
foreignKey: 'menu_id',
targetKey: 'id',
as: 'children'
});
permission
app.model.Permission.belongsTo(app.model.Menu,{
foreignKey: 'menu_id',
targetKey: 'id'
});
以上,基於role來控制權限訪問
- 用户:角色(1:1) - user_info.role_id 關聯 role.role_value
- 角色:菜單(1:N) - role.role_value 關聯 menu.role_level
- 角色:功能權限(1:N) - role.role_value 關聯 permission.role_level
- 菜單:功能權限(1:N) - menu.id 關聯 permission.menu_id
前端交互頁面
![]()
![]()
給角色分配路由及路由下的功能權限。再通過給用户分配角色,來達到控制用户的路由權限和功能權限。
路由數據通過接口判斷角色返回數據給前端,前端addRoute生成動態路由
功能權限值一樣通過接口返回,存入store。