# 需求背景
99%的应用,都要开发用户注册、登录、发送短信验证码、密码加密保存、修改密码、token管理等功能,从前端到后端都需要。
为什么不能有一个开源的通用项目,避免大家的重复开发呢?
`uni-id`应需而生。
`uni-id`为`uniCloud`开发者提供了简单、统一、可扩展的用户管理能力封装。
[clientDB](uniCloud/clientDB)、[DB Schema](uniCloud/schema)、[uniCloud admin](uniCloud/admin),这些产品都基于`uni-id`的账户体系。可以说`uni-id`是uniCloud不可或缺的基础能力。
# 组成部分
`uni-id`包括如下组成部分:
1. 云数据库
主表为 `uni-id-users` 表,保存用户的基本信息。扩展字段有很多,如实名认证数据、工作履历数据,开发者可以自由扩展。
还有 uni-id- 开头的十几个附表,比如权限表`uni-id-permissions`、角色表`uni-id-roles`、积分表`uni-id-scores`、设备表`uni-id-device`...
所有`uni-id`的数据表,在uniCloud web控制台新建表的界面上,都可以选择这些数据表模板,直接建好。
2. 云函数
提供一个名为`uni-id`的公共模块,该模块封装了一系列API,包括注册、登录、修改密码、设置头像等。
示例工程中还提供了一个`user-center`的云函数,演示在云函数中如何调用`uni-id`公共模块。
3. 前端调用
前端示例通过callfunction调用云函数`user-center`,在注册和登录时保存token。
uniCloud框架底层,会自动在callfunction时传递`uni-id`的token(uni-app 2.7.13+版本)。在云函数的event中可直接拿到`uni-id`的token。也就是说开发者无需自己管理token了。
# uni-id 对开发者的价值
1. 节省了大量重复劳动
2. 降低门槛,前端开发者无需纠结怎样设计数据库设计才更合理
3. 多系统打通用户和上下游协同
关于第三点,着重强调下。
一个应用,往往需要集成多个功能模块。比如一个电商应用,需要一个基本电商模板,还需要客服聊天模板,甚至还需要用户交流社区。
在插件市场,每类模板插件都能找到,但他们如果不是基于同一套用户体系设计,就很难整合。
所有uniCloud的应用,几乎都基于`uni-id`来做。
有了统一的账户规范,并且围绕这套账户规范,有各种各样插件,那么开发者可以随意整合这些插件,让数据连同。
规范,还可以让上下游充分协同。插件市场会出现各种数据迁移插件,比如把从discuz里把用户迁移到`uni-id`中的插件,相信围绕这套规范的产业链会非常活跃。
事实上,[clientDB](uniCloud/clientDB)、[DB Schema](uniCloud/schema)、[uniCloud admin](uniCloud/admin)等重要uniCloud产品,以及插件市场上各种优秀的轮子,都是基于`uni-id`的。
# 现状和未来
`uni-id`已完成的内容:
- 注册、登录、发送短信验证码、密码加密保存、修改密码、token管理(短信验证码功能需要HBuilderX 2.8.3+)
- 三方登录:App中的微信登录、微信小程序中的微信登录、支付宝小程序中的支付宝账户登录
- rbac权限角色体系
关于还缺少的部分,哪些DCloud在完善,哪些希望开发者给共同完善开源项目,计划与边界公布如下:
1. 部分社交账户登录
DCloud暂无计划开发百度、头条、QQ等小程序的登录,以及Apple ID、微博、QQ等App端的登录。欢迎其他开发者在开源项目上提交pr,共同完善`uni-id`。
2. 邮箱验证和手机号一键认证sdk集成
手机号一键认证sdk,目前插件市场里已经有不少相关插件,未来DCloud会整合到`uni-id`中。邮箱验证,DCloud暂无计划开发,有需求的开发者欢迎提供pr。
3. 实名认证、活体检测
目前插件市场里已经有不少相关插件,未来DCloud会整合到`uni-id`中。
其他方面,各种常见开源项目如discuz、wordPress、ecshop的用户导入插件,不属于`uni-id`主工程,欢迎开发者单独提交插件到插件市场。
`uni-id`的git仓库:[https://gitee.com/dcloud/uni-id.git](https://gitee.com/dcloud/uni-id.git)
# 快速上手
使用uni-id需要按照以下步骤操作
1. 准备2.8或以上版本的HBuilderX
2. 插件市场导入`uni-id`公用模块,[插件市场 uni-id](https://ext.dcloud.net.cn/plugin?id=2116)
3. 修改公用模块`uni-id`下的`config.json`内所需参数(请参考下面config.json的说明)
4. 上传`cloudfunctions/common`下的`uni-id`模块
5. 按照[公用模块使用说明](https://uniapp.dcloud.io/uniCloud/cf-common)在云函数下安装`uni-id`模块
6. 创建`uni-id-users`、`uni-verify`集合(uni-verify是验证码表。可以使用示例项目里面的db_init.json进行初始化、也可以在web控制台新建表时选择这些表模块)
或者直接导入[uni-id在插件市场的示例工程](https://ext.dcloud.net.cn/plugin?id=2116)
**config.json的说明**
注意:
- **config.json是一个标准json文件,不支持注释**
- 如果不希望使用config.json初始化而是想自行传入参数,可以使用`init`方法[uniID.init](/uniCloud/uni-id?id=init)
配置项:
+ `passwordSecret`为用于加密密码入库的密钥
+ `tokenSecret`为生成token需要的密钥
+ `tokenExpiresIn`token有效期,以秒为单位
+ `passwordErrorLimit`密码错误重试次数,分ip记录密码错误次数,达到重试次数之后等待`passwordErrorRetryTime`时间之后才可以重试
+ `passwordErrorRetryTime`单位为秒
+ 如果使用`sendSmsCode`接口发送短信需要前往[https://dev.dcloud.net.cn/uniSms](https://dev.dcloud.net.cn/uniSms)充值短信额度,配置`config.json`的`service`字段,字段说明见下方示例
+ 如果使用其他方式发送短信可以参考`sendSmsCode`接口的实现[uni-id sendSmsCode](https://gitee.com/dcloud/uni-id/blob/master/src/lib/send-sms-code.js)
+ 另外可以按照客户端平台进行不同的配置,参考下面示例
**下面的配置文件中所有时间的单位都是秒**
> !!!重要!!! passwordSecret与tokenSecret十分重要,切记妥善保存。修改passwordSecret会导致老用户使用密码无法登陆,修改tokenSecret会导致所有已经下发的token失效。如果重新导入uni-id切勿直接覆盖config.json相关配置
```json
// 如果拷贝此内容切记去除注释
{
"passwordSecret": "passwordSecret-demo", // 加密密码所用的密钥,注意修改为自己的,使用一个较长的字符串即可
"tokenSecret": "tokenSecret-demo", // 生成token所用的密钥,注意修改为自己的,使用一个较长的字符串即可
"tokenExpiresIn": 7200, // 全平台token过期时间,未指定过期时间的平台会使用此值
"tokenExpiresThreshold": 600, // 新增于uni-id 1.1.7版本,checkToken时如果token有效期小于此值则自动获取新token,请注意将新token返回给前端保存,如果不配置此参数则不开启自动获取新token功能
"bindTokenToDevice": true, // 是否将token和设备绑定,设置为true会进行ua校验,默认为true
"passwordErrorLimit": 6, // 密码错误最大重试次数
"passwordErrorRetryTime": 3600, // 密码错误重试次数超限之后的冻结时间
"autoSetInviteCode": false, // 是否在用户注册时自动设置邀请码,默认不自动设置
"forceInviteCode": false, // 是否强制用户注册时必填邀请码,默认为false(需要注意的是目前只有短信验证码注册才可以填写邀请码),设置为true时需要在loginBySms时指定type为register来使用注册,登录时也要传入type为login
"app-plus": {
"tokenExpiresIn": 2592000,
"oauth": {
// App微信登录所用到的appid、appsecret需要在微信开放平台获取,注意:不是公众平台而是开放平台
"weixin": {
"appid": "weixin appid",
"appsecret": "weixin appsecret"
没有合适的资源?快使用搜索试试~ 我知道了~
毕业设计&课设--基于uniCloud的「全端、全栈、独立开发」的小日常时间打点打卡小程序 ~ 可用于毕业设计.zip
共331个文件
png:157个
js:75个
ts:29个
需积分: 5 0 下载量 135 浏览量
2024-02-20
00:11:48
上传
评论
收藏 38.76MB ZIP 举报
温馨提示
毕业设计&课设--基于uniCloud的「全端、全栈、独立开发」的小日常时间打点打卡小程序 ~ 可用于毕业设计
资源推荐
资源详情
资源评论
收起资源包目录
毕业设计&课设--基于uniCloud的「全端、全栈、独立开发」的小日常时间打点打卡小程序 ~ 可用于毕业设计.zip (331个子文件)
common.css 2KB
eventDetail.css 2KB
home.css 1KB
mine.css 985B
addDot.css 904B
addEvent.css 853B
editTags.css 634B
mpLogin.css 605B
record.css 267B
.eslintignore 64B
.gitignore 235B
.gitignore 32B
index.html 1KB
小程序预览3.jpg 288KB
小程序预览1.jpg 274KB
小程序预览6.jpg 269KB
小程序预览4.jpg 247KB
小程序预览2.jpg 234KB
小程序预览8.jpg 185KB
小程序预览5.jpg 179KB
小程序预览7.jpg 178KB
uCharts.js 196KB
gen_iconSrc.js 38KB
alipayBase.js 9KB
rbac.js 8KB
SOtime.js 6KB
login-by-univerify.js 5KB
uni-token.js 4KB
upload.js 3KB
utils.js 3KB
login.js 3KB
login-by-sms.js 3KB
normalize.js 2KB
login-by-weixin.js 2KB
register.js 2KB
utils.js 2KB
check-pwd.js 2KB
send-sms-code.js 2KB
create-api.js 2KB
login-by-email.js 2KB
verify.js 2KB
login-by-alipay.js 2KB
gen_iconColor.js 2KB
config.js 2KB
babel.config.js 2KB
get-valid-Invite-code.js 1KB
index.js 1KB
bind-weixin.js 1KB
register-exec.js 1KB
accept-invite.js 1KB
login-exec.js 1KB
update-pwd.js 1KB
rollup.config.js 1003B
friendly-date.js 929B
bind-mobile.js 912B
encrypt-pwd.js 903B
.eslintrc.js 880B
bind-email.js 857B
unbind-mobile.js 843B
unbind-email.js 830B
bind-alipay.js 823B
alipay-api.js 773B
weixin-api.js 769B
postcss.config.js 754B
code-session-weixin.js 716B
get-invited-user.js 716B
check-commit-msg.js 687B
code-session-alipay.js 656B
index.js 621B
get-user-info.js 613B
reset-pwd.js 570B
index.js 566B
unbind-weixin.js 562B
unbind-alipay.js 537B
sync-package.js 522B
set-user-invite-code.js 511B
vue.config.js 499B
logout.js 460B
index.js 453B
update-user.js 437B
index.js 406B
set-avatar.js 386B
index.js 385B
index.js 382B
error.js 379B
index.js 339B
index.js 268B
delete-user.js 237B
wrap-fn.js 237B
uni-id.js 230B
index.js 212B
index.js 162B
index.js 157B
protocols.js 149B
.eslintrc.js 148B
index.js 51B
package-lock.json 854KB
package-lock.json 104KB
icon_images.json 24KB
icon_colors.json 14KB
共 331 条
- 1
- 2
- 3
- 4
资源评论
Kwan的解忧杂货铺
- 粉丝: 1w+
- 资源: 3682
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功