el-admin 角色-权限
这篇博客用记录第一次使用el-admin或是除此接触角色权限控制方式编写接口。
一、环境描述
角色表
角色id | 角色名称 | 角色level | 角色描述 |
---|---|---|---|
1 | admin | 1 | 管理员 |
2 | staff | 2 | 职工 |
3 | visitor | 3 | 游客 |
权限表
权限id | 权限内容 |
---|---|
1 | 所有应用接口 |
2 | 前台全部应用部分 |
3 | 前台游客应用部分 |
4 | 后台职工应用部分 |
角色-授权表
角色id | 权限id |
---|---|
1 | {1} |
2 | {2,4} |
3 | {3} |
这个是标准的RBAC的权限设置思路,接口的安全由
权限表
直接控制,之后将权限赋予对应的角色
,这样用户有什么角色就有什么接口权限。
那么问题来了!!!怎么使用这种表的设计。
这三层就是表对应的关系。
代码实现(伪)
// java伪代码
@Controller
public Controller{
@GetMapping("file")
@hasAnyRole(["file"])
public void fileController(){
// 拥有file权限的角色才能使用
}
@GetMapping("common")
@hasAnyRole(["common"])
public void commonController(){
// 拥有common权限的角色才能使用
}
@GetMapping("data")
@hasAnyRole(["data"])
public void dataController(){
// 拥有data权限的角色才能使用
}
}
通过上述图,如果用户发出接口请求,会从根据当前用户的角色寻找此角色的权限接口有哪些,最后自动判断后通过接口
。
所以不要再写根据当前用户角色判断业务逻辑的方式了。
注意
这个其实是利用了RCBA
的权限控制的思想,如果实在是看不懂可以先去看看相关的知识。