Skip to content
索引

uni-id

https://uniapp.dcloud.net.cn/uniCloud/uni-id-pages.html

如何使用

第一步、导入uni-id-pages

uni-id-pages,是uni-id体系的一部分

它基于uni-id-common提供了一批现成的、开源的、登录注册账户管理相关的前端页面和云端云对象

  1. 在插件市场导入https://ext.dcloud.net.cn/plugin?name=uni-id-pages
  2. 调整项目的pages.json,uni_modules/uni-id-pages/pages/login/login-withpwd移到第一项
  3. 这时运行到浏览器会显示登录注册页面,但注册时会提示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

https://uniapp.dcloud.net.cn/uniCloud/uni-id-common.html

https://ext.dcloud.net.cn/plugin?id=8576

uni-id-commonuni-id体系中用于token管理的公共模块

新版的uni-id-common仅包含token校验、生成及刷新功能。而用户注册、登录、忘记密码等实现都挪到了uni-id-co云对象中(该云对象内置于uni-id-pages

公共模块

cloudfunctions/common右击新建公共模块

右击公共模块文件夹可以选择上传公共模块

公共模块可以用于云函数进行调用

js
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字段即可调整用户权限

Released under the MIT License.