Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
DCloud
unidocs-zh
提交
523dbd84
unidocs-zh
项目概览
DCloud
/
unidocs-zh
通知
3598
Star
108
Fork
921
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
120
列表
看板
标记
里程碑
合并请求
109
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
unidocs-zh
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
120
Issue
120
列表
看板
标记
里程碑
合并请求
109
合并请求
109
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
提交
523dbd84
编写于
10月 08, 2022
作者:
雪洛
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
docs: update secure network
上级
f9c1afe5
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
48 addition
and
13 deletion
+48
-13
docs/uniCloud/secure-network.md
docs/uniCloud/secure-network.md
+48
-13
未找到文件。
docs/uniCloud/secure-network.md
浏览文件 @
523dbd84
...
@@ -29,23 +29,31 @@ DCloud面向开发者同时提供了端引擎`uni-app` 和 云引擎`uniCloud`
...
@@ -29,23 +29,31 @@ DCloud面向开发者同时提供了端引擎`uni-app` 和 云引擎`uniCloud`
### 微信小程序@mp-weixin
### 微信小程序@mp-weixin
安全网络在微信小程序上的实现,依赖了微信提供的一些用户级的凭据。所以需要下载
`uni-id`
和
`uni-open-bridge`
,并在app.vue里初始化。
安全网络在微信小程序上的实现,依赖了微信提供的一些用户级的凭据。所以需要下载
`uni-id
-pages
`
和
`uni-open-bridge`
,并在app.vue里初始化。
1.
工程中导入uni-id
1.
在
[
开发者中心
](
https://dev.dcloud.net.cn/
)
`应用详情 --> 【名称待定】`
内填写微信小程序的appId。一个应用只能有一个发行配置,但是可以有多个开发配置
【图片待补充】
2.
在uniCloud控制台关联允许发送安全网络请求的应用
【图片待补充】
3.
工程中导入uni-id-pages
-
`uni-id`
[
文档
](
uni-id-summary.md#save-user-token
)
-
`uni-id`
[
文档
](
uni-id-summary.md#save-user-token
)
-
`uni-id-co`
[
插件下载地址
](
https://ext.dcloud.net.cn/plugin?id=8577
)
-
`uni-id-co`
[
插件下载地址
](
https://ext.dcloud.net.cn/plugin?id=8577
)
`uni-id-pages`
这个插件是云端一体的登录插件,其实安全网络只需要其中的
`uni-id-co`
云对象。插件中前端登录页面是否使用由开发者自己根据业务决定。
`uni-id-pages`
这个插件是云端一体的登录插件,其实安全网络只需要其中的
`uni-id-co`
云对象。插件中前端登录页面是否使用由开发者自己根据业务决定。
2
.
工程中导入uni-open-bridge插件
4
.
工程中导入uni-open-bridge插件
安全网络在微信小程序上依赖了微信的
`access_token`
、
`session_key`
、
`encrypt_key`
等凭据。这些凭据需要
`uni-open-bridge`
统一接管。
安全网络在微信小程序上依赖了微信的
`access_token`
、
`session_key`
、
`encrypt_key`
等凭据。这些凭据需要
`uni-open-bridge`
统一接管。
-
`uni-open-bridge`
[
文档
](
https://uniapp.dcloud.net.cn/uniCloud/uni-open-bridge.html
)
-
`uni-open-bridge`
[
文档
](
https://uniapp.dcloud.net.cn/uniCloud/uni-open-bridge.html
)
-
`uni-open-bridge`
[
插件下载地址
](
https://ext.dcloud.net.cn/plugin?id=9002
)
-
`uni-open-bridge`
[
插件下载地址
](
https://ext.dcloud.net.cn/plugin?id=9002
)
3
.
配置uni-id和uni-open-bridge
5
.
配置uni-id和uni-open-bridge
登陆微信公众平台
[
https://mp.weixin.qq.com/
](
https://mp.weixin.qq.com/
)
,获取微信小程序的固定凭据
`appid`
和
`secret`
,配置到 uni-id-config
登陆微信公众平台
[
https://mp.weixin.qq.com/
](
https://mp.weixin.qq.com/
)
,获取微信小程序的固定凭据
`appid`
和
`secret`
,配置到 uni-id-config
...
@@ -85,9 +93,9 @@ DCloud面向开发者同时提供了端引擎`uni-app` 和 云引擎`uniCloud`
...
@@ -85,9 +93,9 @@ DCloud面向开发者同时提供了端引擎`uni-app` 和 云引擎`uniCloud`
注意:拷贝此文件内容时需要移除
`注释`
。标准json不支持注释。在HBuilderX中可用多选
`//`
来批量移除注释。
注意:拷贝此文件内容时需要移除
`注释`
。标准json不支持注释。在HBuilderX中可用多选
`//`
来批量移除注释。
如果项目之前已经使用过uni-id和uni-open-bridge,则上述步骤可省略。
如果项目之前已经使用过uni-id
-pages
和uni-open-bridge,则上述步骤可省略。
4
.
在应用的生命周期
`onLaunch`
中检查微信登陆状态,如果过期需要登陆
6
.
在应用的生命周期
`onLaunch`
中检查微信登陆状态,如果过期需要登陆
注意:
[
uni.checkSession
](
https://uniapp.dcloud.net.cn/api/plugins/login.html#uni-checksession
)
有调用次数限制警告,一个
`pv`
可调用
`2`
次
注意:
[
uni.checkSession
](
https://uniapp.dcloud.net.cn/api/plugins/login.html#uni-checksession
)
有调用次数限制警告,一个
`pv`
可调用
`2`
次
...
@@ -117,15 +125,32 @@ App.vue页面需要补充如下代码:
...
@@ -117,15 +125,32 @@ App.vue页面需要补充如下代码:
}
}
<
/script>
<
/script>
```
```
7.
在项目根目录manifest.json文件内为微信小程序平台开启安全网络模块
【图片待补充】
### App@app
App平台安全网络需使用
[
自定义基座
](
../tutorial/run/run-app.md#customplayground
)
,App端安全网络不依赖于登录逻辑。
1.
在
[
开发者中心
](
https://dev.dcloud.net.cn/
)
`应用详情 --> 证书管理`
内填写安卓应用的包名、签名和iOS应用的bundleId。一个应用只能有一个发行证书配置,但是可以有多个开发证书配置
5.
在manifest中勾选加密模块
【图片待补充】
**缺内容?**
2.
在uniCloud控制台关联允许发送安全网络请求的应用
【图片待补充】
3.
在项目根目录manifest.json文件内为app平台开启安全网络模块
【图片待补充】
## 调用方式
## 调用方式
准备工作完成后,在uni-app客户端调用uniCloud服务器时,可以通过加入secret参数来声明这次请求走安全网络,对传输数据加密。
准备工作完成后,在uni-app客户端调用uniCloud服务器时,可以通过加入secret参数来声明这次请求走安全网络,对传输数据加密。
-
callFunction
### 云函数
客户端通过callFunction调用云函数时,加入secretType参数。
客户端通过callFunction调用云函数时,加入secretType参数。
```
js
```
js
...
@@ -138,7 +163,7 @@ uniCloud.callFunction({
...
@@ -138,7 +163,7 @@ uniCloud.callFunction({
})
})
```
```
-
云对象
###
云对象
客户端通过importObject调用云对象时,通过secretMethods参数来配置每个方法调用时是否加密。
客户端通过importObject调用云对象时,通过secretMethods参数来配置每个方法调用时是否加密。
...
@@ -148,7 +173,7 @@ uniCloud.importObject('object-name', {
...
@@ -148,7 +173,7 @@ uniCloud.importObject('object-name', {
})
})
```
```
-
clientDB
###
clientDB
暂不支持
暂不支持
...
@@ -170,11 +195,15 @@ uniCloud.importObject('object-name', {
...
@@ -170,11 +195,15 @@ uniCloud.importObject('object-name', {
方法级配置优先级最高,例如
`secretMethods: {'*':'response', 'login':'both'}`
,login 的 both 覆盖了
`'*':'response'`
方法级配置优先级最高,例如
`secretMethods: {'*':'response', 'login':'both'}`
,login 的 both 覆盖了
`'*':'response'`
**注意**
-
微信小程序安全网络依赖于登录逻辑,因此在客户端检测到发送安全网络请求时用户未登录时会自动调用uni-id-co的loginByWeixin接口
## 服务器端
## 服务器端
虽然uni-app客户端和uniCloud云端通信是加密的,但对于开发者而言过程是透明的。
虽然uni-app客户端和uniCloud云端通信是加密的,但对于开发者而言过程是透明的。
**不管是客户端接收云端数据、还是云端接受客户端数据,开发者的代码拿到的数据都是
加
密后的数据。**
**不管是客户端接收云端数据、还是云端接受客户端数据,开发者的代码拿到的数据都是
解
密后的数据。**
但云端有一个注意事项:为了避免客户端伪造
`secretType`
获取服务器敏感数据,应以服务器端为准,如果客户端携带的
`secretType`
不符合要求应拒绝响应数据。示例代码如下
但云端有一个注意事项:为了避免客户端伪造
`secretType`
获取服务器敏感数据,应以服务器端为准,如果客户端携带的
`secretType`
不符合要求应拒绝响应数据。示例代码如下
...
@@ -215,7 +244,13 @@ module.exports = {
...
@@ -215,7 +244,13 @@ module.exports = {
## 错误码
## 错误码
**缺内容,客户端错误,服务器解密错误,都应该把错误码列出来?**
|错误码 |说明 |平台 |
|--- |--- |--- |
|ACCOUNT_NOT_EXISTS |用户账号不存在 |微信小程序 |
|OPENID_NOT_FOUND |用户表记录内openid未找到 |微信小程序 |
|GET_ENCRYPT_KEY_FAILED |获取加密key失败 |微信小程序 |
微信小程序加解密时还会使用uni-id-common的checkToken方法,相关错误码参考:
[
uni-id错误码
](
uni-id-summary.md#errcode
)
## 小贴士
## 小贴士
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录