uni-id
如何使用
第一步、导入uni-id-pages
uni-id-pages
,是uni-id
体系的一部分
它基于uni-id-common
提供了一批现成的、开源的、登录注册账户管理相关的前端页面和云端云对象
- 在插件市场导入https://ext.dcloud.net.cn/plugin?name=uni-id-pages
- 调整项目的pages.json,
uni_modules/uni-id-pages/pages/login/login-withpwd
移到第一项 - 这时运行到浏览器会显示登录注册页面,但注册时会提示
Invalid uni-id config file
第二步、创建uni-id的云端配置文件
https://uniapp.dcloud.net.cn/uniCloud/uni-id-summary.html#config
根据目录uniCloud/cloudfunctions/common/uni-config-center/uni-id/config.json
,新建config.json文件,复制官网上的配置文件内容,使用//.*
的正则去除所有注释
配置项中:
passwordSecret
为用于加密密码入库的密钥tokenSecret
为生成token需要的密钥
tokenSecret
属性默认是空的,需要设置一个字符串作为密钥规则
passwordSecret与tokenSecret十分重要,切记妥善保存,并且不能随意更改,修改passwordSecret会导致老用户使用密码无法登录,修改tokenSecret会导致所有已经下发的token失效。如果重新导入uni-id切勿直接覆盖config.json相关配置
uni-id-common
uni-id-common
是uni-id
体系中用于token管理的公共模块
新版的uni-id-common
仅包含token校验、生成及刷新功能。而用户注册、登录、忘记密码等实现都挪到了uni-id-co
云对象中(该云对象内置于uni-id-pages)
公共模块
cloudfunctions/common右击新建公共模块
右击公共模块文件夹可以选择上传公共模块
公共模块可以用于云函数进行调用
const { appId, appSecret } = require("wx-common")
const { appId, appSecret } = require("wx-common")
RBAC模型
https://uniapp.dcloud.net.cn/uniCloud/uni-id-summary.html#rbac
RBAC:Role-Based Access Control,基于角色的访问控制
其基本思想:对系统操作的各种权限不是直接授予具体的用户,而是在用户集合与权限集合之间建立一个角色集合。每一种角色对应一组相应的权限。一旦用户被分配了适当的角色后,该用户就拥有此角色的所有权限
这个模型有三个关键名词:用户、角色、权限:
- 用户:使用系统的人,一个用户可以同时有多个角色,比如内容审核员、比如部门管理员
- 角色:权限的集合,一个角色可以有多个权限。比如内容审核员这个角色,有隐藏帖子权限、有帖子加精权限;而部门管理员这个角色,有给本部门新增员工权限、有删除本部门员工的权限
- 权限:数据权限或业务权限,例如:删除用户、帖子加精等
用户、角色、权限都存在数据库了,都可以动态创建和修改。当权限对应的代码实现完成后,用户的新入、退出、角色升迁都无需再修改代码,在uni-admin后台的web界面可以由运维人员可视化的给每个用户调整角色、给每个角色调整权限。
这样做的好处是,增强系统管理的扩展性,对于批量用户的权限变更,仅需变更该批用户角色对应权限即可,而无需对该批每个用户变更权限
uni-id-users表
用户信息存储在uni-id-users
表中,然后通过role
字段保存该用户所拥有的所有角色ID,角色ID即角色表(uni-id-roles
表)中的role_id
字段,注意不是_id
字段
更改role
字段即可调整用户权限