一起养成写作习惯!这是我参与「掘金日新计划 · 4 月更文挑战」的第9天,点击查看活动详情。
权限模块
权限:权利(能做的)和限制(不能做的),在权限范围内做好自己的事情,不该看的不看,不该做的不做
认证: 验证用户名密码是否正确的过程
授权: 对用户所能访问的资源进行控制(动态显示菜单、url级别的权限控制)\
为什么要实现权限系统
首先系统需要进行登陆才能访问
其次不同登陆用户要有不同的权利,而且要有不同的菜单(例如财务经理针对系统中财务相关模块进行
操作,人事经理针对系统中人事模块进行操作)\
权限控制基本原理
1.ACL(Access Control Lists,缩写ACL)
ACL是最早也是最基本的一种访问控制机制,它的原理非常简单:每一项资源,都配有一个列表,这个
列表记录的就是哪些用户可以对这项资源执行CRUD中的那些操作。当系统试图访问这项资源时,会首
先检查这个列表中是否有关于当前用户的访问权限,从而确定当前用户可否执行相应的操作。总得来
说,ACL是一种面向资源的访问控制模型,它的机制是围绕“资源”展开的。\
2.基于角色的访问控制RBAC(Role-Based Access Control)
RBAC是把用户按角色进行归类,通过用户的角色来确定用户能否针对某项资源进行某项操作。
RBAC相对于ACL最大的优势就是它简化了用户与权限的管理,通过对用户进行分类,使得角色与权限关
联起来,而用户与权限变成了间接关联。RBAC模型使得访问控制,特别是对用户的授权管理变得非常
简单和易于维护,因此有广泛的应用\
规则一:每个登陆的用户,可以有多个角色;
规则二:每个角色又可以拥有多个权限(包含菜单和资源);\
权限模块功能分析
权限模块主要细分为角色模块、菜单模块、资源模块,将针对细分的三个模块进行具体功能实现,同
时会完成用户登陆、用户关联角色及动态菜单显示\
1.登录授权
1.1 用户登录
- 名称: login
- 描述: 用户登录
- URL: http://localhost:8080/ssm-web/user/login
- 请求方式: GET
- 请求示例
http://localhost:8080/ssm-web/user/login?phone=18512341234&password=123456
- 响应结果示例
{
state: 1,
message: "success",
content: '{
"access_token": "",
"user_id": "100030016"
}',
success: true
}
1.2 分配角色(回显)
- 名称: findUserRoleById
- 描述: 获取用户拥有的菜单权限
- URL: http://localhost:8080/ssm-web/user/findUserRoleById
- 请求方式: GET
- 请求示例
http://localhost:8080/ssm-web/user/findUserRoleById?id=4
- 响应结果
| 参数名称 | 参数说明 | 类型 | 备注 |
|---|---|---|---|
| success | boolean | ||
| state | integer(int32) | ||
| message | string | ||
| content | object |
- 响应结果示例
{
"success": true,
"state": 200,
"message": "分配角色成功",
"content": [{
"id": 2,
"code": "AUTHORITY_MANAGER",
"name": "权限管理员",
"description": "管理权限相关数据,如角色、菜单、资源。可以给用户分配角色。",
"createdTime": null,
"updatedTime": null,
"createdBy": null,
"updatedBy": null
},
{
"id": 3,
"code": "COURSE_MANAGER",
"name": "课程管理员",
"description": "管理课程信息,对课程、课时、章节进行管理。",
"createdTime": null,
"updatedTime": null,
"createdBy": null,
"updatedBy": null
}]
}
5.3 分配角色
- 名称: userContextRole
- 描述: 获取用户拥有的菜单权限
- URL: http://localhost:8080/ssm-web/user/userContextRole
- 请求方式: POST
- 请求示例
{
"userId": 4,
"roleIdList": [4,5,6]
}
- 响应结果
| 参数名称 | 参数说明 | 类型 | 备注 |
|---|---|---|---|
| success | boolean | ||
| state | integer(int32) | ||
| message | string | ||
| content | object |
5.4 获取用户拥有的权限
- 名称: getUserPermissions
- 描述: 获取用户拥有的菜单权限
- URL: http://localhost:8080/ssm-web/user/getUserPermissions
- 请求方式: GET
- 请求示例
- 响应结果
| 参数名称 | 参数说明 | 类型 | 备注 |
|---|---|---|---|
| success | boolean | ||
| state | integer(int32) | ||
| message | string | ||
| content | object |
- 响应结果示例
{
"state": 1,
"message": "success",
"content": {
"menuList": [{
"id": 1,
"parentId": -1,
"name": "权限管理",
"subMenuList": [{
"id": 2,
"name": "角色列表"
},
{
"id": 3,
"name": "菜单列表",
}]
}],
"resourceList": [{
"id": 1,
"name": "获取所有角色"
},
{
"id": 2,
"name": "给用户分配角色",
}]
},
"success": true
}