提交 a517c7a0 编写于 作者: d-u-a's avatar d-u-a

feat: 新增安全网络示例

上级 81d683f0
<script>
import checkUpdate from '@/uni_modules/uni-upgrade-center-app/utils/check-update';
export default {
onLaunch: function() {
onLaunch: async function() {
console.log('App Launch')
checkUpdate()//更新升级
checkUpdate() //更新升级
},
mounted() {
// #ifdef H5
......@@ -23,15 +23,18 @@
<style>
/*每个页面公共css */
/* #ifndef APP-NVUE */
view{
view {
box-sizing: border-box;
}
@font-face {
font-family: "iconfont";
src: url('https://at.alicdn.com/t/font_2354462_s00xh8caffp.ttf');
}
.ico{
.ico {
font-family: iconfont;
}
/* #endif */
</style>
......@@ -14,6 +14,20 @@
"enablePullDownRefresh": false
}
},
{
"path": "pages/secure-network/cloud-function",
"style": {
"navigationBarTitleText": "安全网络 - 云函数",
"enablePullDownRefresh": false
}
},
{
"path": "pages/secure-network/cloud-object",
"style": {
"navigationBarTitleText": "安全网络 - 云对象",
"enablePullDownRefresh": false
}
},
{
"path": "pages/test/test",
"style": {
......@@ -181,26 +195,23 @@
"navigationBarTitleText": "扩展能力Redis",
"enablePullDownRefresh": false
}
}
,{
}, {
"path": "uni_modules/uni-upgrade-center/pages/version/list",
"style": {
"navigationBarTitleText": "版本列表"
}
}
,{
}, {
"path": "uni_modules/uni-upgrade-center/pages/version/add",
"style": {
"navigationBarTitleText": "新版发布"
}
}
,{
}, {
"path": "uni_modules/uni-upgrade-center/pages/version/detail",
"style": {
"navigationBarTitleText": "版本信息查看"
}
}
],
}
],
"tabBar": {
"color": "#7A7E83",
"selectedColor": "#1296db",
......
......@@ -14,6 +14,12 @@
<button type="primary" @click="get">查询前10条数据</button>
<button type="primary" @click="useCommon">使用公用模块</button>
<button type="primary" @click="toRedisPage">使用Redis</button>
<!-- #ifdef APP-PLUS || MP-WEIXIN -->
<navigator url="../secure-network/cloud-function">
<button type="primary">安全网络</button>
</navigator>
<!-- #endif -->
</view>
</view>
</template>
......
......@@ -14,6 +14,12 @@
<button type="primary" @click="update">修改数据</button>
<button type="primary" @click="get">查询前10条数据</button>
<button type="primary" @click="useCommon">使用公用模块</button>
<!-- #ifdef APP-PLUS || MP-WEIXIN -->
<navigator url="../secure-network/cloud-object">
<button type="primary">安全网络</button>
</navigator>
<!-- #endif -->
</view>
</template>
<template v-else>
......
<template>
<view class="container">
<view class="title">请求数据</view>
<input class="input" v-model="inputValue" />
<view class="group">
<view class="secret-type">
secretType: "both"
</view>
<view class="secret-type-comment">
客户端和服务器上行下行数据都加密数据
</view>
<button type="primary" @click="getBySecretType('both')">get</button>
</view>
<view class="group">
<view class="secret-type">
secretType: "request"
</view>
<view class="secret-type-comment">
只加密客户端请求时的上行数据,服务器下发数据不加密
</view>
<button type="primary" @click="getBySecretType('request')">get</button>
</view>
<view class="group">
<view class="secret-type">
secretType: "response"
</view>
<view class="secret-type-comment">
客户端请求时不加密数据,只加密服务器下发的数据
</view>
<button type="primary" @click="getBySecretType('response')">get</button>
</view>
<view class="tips">
提示:
<view class="tips-item">
当前请求的云函数强制校验 secretType: "both",返回值为请求的数据
</view>
<view class="tips-item">
不管是客户端接收云端数据、还是云端接受客户端数据,开发者的代码拿到的数据永远都是解密后的数据
</view>
</view>
</view>
</template>
<script>
export default {
data() {
return {
inputValue: 'uniCloud-secure-network'
}
},
methods: {
getBySecretType(secretType) {
uni.showLoading({
title: '处理中...'
})
uniCloud.callFunction({
name: 'secure-network',
data: {
value: this.inputValue
},
secretType,
success: (res) => {
uni.showModal({
content: res.result.value,
showCancel: false
})
},
fail: (err) => {
uni.showModal({
content: err.message,
showCancel: false
})
console.error(err)
},
complete: () => {
uni.hideLoading()
}
})
}
}
}
</script>
<style>
@import url("css.css");
</style>
<template>
<view class="container">
<view class="title">请求数据</view>
<input class="input" v-model="inputValue" />
<view class="group">
<view class="secret-type">
secretType: "both"
</view>
<view class="secret-type-comment">
客户端和服务器上行下行数据都加密数据
</view>
<button type="primary" @click="getBySecretType('both')">get</button>
</view>
<view class="group">
<view class="secret-type">
secretType: "request"
</view>
<view class="secret-type-comment">
只加密客户端请求时的上行数据,服务器下发数据不加密
</view>
<button type="primary" @click="getBySecretType('request')">get</button>
</view>
<view class="group">
<view class="secret-type">
secretType: "response"
</view>
<view class="secret-type-comment">
客户端请求时不加密数据,只加密服务器下发的数据
</view>
<button type="primary" @click="getBySecretType('response')">get</button>
</view>
<view class="tips">
提示:
<view class="tips-item">
当前请求的云对象强制校验 secretType: "both",返回值为请求的数据
</view>
<view class="tips-item">
不管是客户端接收云端数据、还是云端接受客户端数据,开发者的代码拿到的数据永远都是解密后的数据
</view>
</view>
</view>
</template>
<script>
export default {
data() {
return {
inputValue: 'uniCloud-secure-network'
}
},
methods: {
getBySecretType(secretType) {
uni.showLoading({
title: '处理中...'
})
const secureNetworkObject = uniCloud.importObject('secure-network-object', {
secretMethods: {
'get': secretType
}
});
secureNetworkObject.get(this.inputValue).then((res) => {
uni.hideLoading()
uni.showModal({
content: JSON.stringify(res),
showCancel: false
})
}).catch((err) => {
uni.hideLoading()
console.error(err)
})
}
}
}
</script>
<style>
@import url("css.css");
</style>
.container {
padding: 15px;
}
.title {
font-size: 15px;
}
.input {
margin-top: 5px;
padding: 5px 8px;
border: 1px solid #ccc;
border-radius: 5px;
}
.group {
margin-top: 30px;
}
.secret-type {
font-weight: bold;
}
.secret-type-comment {
font-size: 14px;
margin-top: 5px;
opacity: .7;
}
button {
margin-top: 10px;
}
.tips {
font-size: 14px;
margin-top: 30px;
opacity: .8;
}
.tips-item {
display: list-item;
margin-left: 20px;
margin-top: 5px;
}
// 云对象教程: https://uniapp.dcloud.net.cn/uniCloud/cloud-obj
// jsdoc语法提示教程:https://ask.dcloud.net.cn/docs/#//ask.dcloud.net.cn/article/129
module.exports = {
_before: function() { // 通用预处理器
const methodName = this.getMethodName()
const clientInfo = this.getClientInfo()
const secretType = clientInfo.secretType
// methodName 是客户端调用的方法名
// secretType 是客户端调用 uniCloud.importObject 传递的参数 secretMethods
console.log(secretType);
if (methodName === 'get' && (secretType !== 'both' || secretType !== 'response')) {
throw new Error('secretType invalid') // 拒绝返回有效数据
}
},
/**
* method1方法描述
* @param {string} param1 参数1描述
* @returns {object} 返回值描述
*/
get(param1) {
// 参数校验,如无参数则不需要
if (!param1) {
return {
errCode: 'PARAM_IS_NULL',
errMsg: '参数不能为空'
}
}
// 业务逻辑
// 返回结果
return {
param1 //请根据实际需要返回值
}
}
}
{
"name": "secure-object",
"dependencies": {},
"extensions": {
"uni-cloud-jql": {}
}
}
\ No newline at end of file
'use strict';
exports.main = async (event, context) => {
//event为客户端上传的参数
console.log('event : ', event)
const secretType = context.secretType
// secretType 是客户端调用 uniCloud.callFunction 传递的参数 secretType
if (secretType !== 'both' || secretType !== 'response') {
throw new Error('secretType invalid') // 拒绝返回有效数据
}
//返回数据给客户端
return event
};
{
"name": "secure-network",
"dependencies": {},
"extensions": {
"uni-cloud-jql": {}
}
}
\ No newline at end of file
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册