本文档介绍了 Mall 电商平台后台管理模块的用户与角色管理系统。该系统为后台管理员提供身份验证、授权和访问控制。它涵盖了管理员用户注册、角色管理、资源权限分配以及菜单授权。
如需了解面向客户的用户管理,请参阅会员服务。
用户与角色管理系统基于基于角色的访问控制 (RBAC) 模型构建,在该模型中,权限被分配给角色,而角色又被分配给用户。
来源
本系统使用 JWT (JSON Web Token) 进行无状态认证。认证过程如下:
来源
可以通过注册 API 创建新的管理员账户。
来源
本系统提供了一套全面的管理员用户管理接口。
| 端点 | 方法 | 描述 |
|---|---|---|
/admin/register | POST | 注册新管理员用户 |
/admin/login | POST | 管理员登录 |
/admin/refreshToken | GET | 刷新 JWT Token |
/admin/info | GET | 获取当前用户信息 |
/admin/logout | POST | 退出登录 |
/admin/list | GET | 带分页搜索管理员用户 |
/admin/{id} | GET | 获取指定管理员用户详情 |
/admin/update/{id} | POST | 更新管理员用户信息 |
/admin/delete/{id} | POST | 删除管理员用户 |
/admin/updateStatus/{id} | POST | 启用/禁用管理员用户 |
/admin/updatePassword | POST | 更新密码 |
/admin/role/update | POST | 分配角色给管理员 |
/admin/role/{adminId} | GET | 获取管理员的角色 |
来源
系统包含安全的密码处理机制。
PasswordEncoder 进行加密。密码更新过程会为各种错误情况返回不同的状态码。
-1:参数无效-2:用户未找到-3:旧密码不正确1:成功来源
角色用于对权限进行分组,并将它们分配给管理员。
以下接口用于管理角色:
| 端点 | 方法 | 描述 |
|---|---|---|
/role/create | POST | 创建新角色 |
/role/update/{id} | POST | 更新角色 |
/role/delete | POST | 删除角色(批量) |
/role/list | GET | 带分页获取角色 |
/role/listAll | GET | 获取所有角色 |
/role/updateStatus/{id} | POST | 启用/禁用角色 |
来源
管理员可以被分配多个角色。角色分配过程如下:
来源
资源代表用户可以访问的 API 端点。资源被分配给角色,而角色又被分配给用户。
资源分配 API
| 端点 | 方法 | 描述 |
|---|---|---|
/role/allocResource | POST | 将资源分配给角色 |
/role/listResource/{roleId} | GET | 获取角色的资源 |
来源
菜单代表了后台界面的导航结构。与资源类似,菜单也被分配给角色。
菜单分配 API
| 端点 | 方法 | 描述 |
|---|---|---|
/role/allocMenu | POST | 将菜单分配给角色 |
/role/listMenu/{roleId} | GET | 获取角色的菜单 |
当管理员登录时,系统会返回他们的菜单结构。
来源
当用户尝试访问受保护的资源时,系统会验证其授权。
AdminUserDetails 类封装了管理员用户详细信息和资源,供 Spring Security 进行身份验证和授权。
来源
系统实现缓存以提高常用数据的访问性能。
当数据被修改时,相关的缓存条目会被失效。
delAdmin(id)delResourceList(adminId)delResourceListByRole(roleId)来源
以下图表说明了用户与角色管理系统中实体之间的关系。
来源
本系统与 Spring Security 集成以进行身份验证和授权。关键组件如下:
UmsAdminServiceImpl 实现 UserDetailsService 以加载用户详情。AdminUserDetails 实现 UserDetails 以向 Spring Security 提供用户信息。JwtTokenUtil 负责 JWT Token 的生成和验证。JWT Token 包含用户的身份信息,并且是所有受保护端点所必需的。Token 通过 Bearer 方案包含在 Authorization 头中。
来源
总而言之,用户与角色管理系统提供了一个全面、灵活且安全框架,用于根据用户角色和权限控制对 Mall 电商后台的访问。