提交 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() {
console.log('App Launch')
checkUpdate()//更新升级
},
mounted() {
// #ifdef H5
//const VConsole = require('@/common/js/vconsole.min.js')
//new VConsole()
// #endif
},
onShow: function() {
console.log('App Show')
},
onHide: function() {
console.log('App Hide')
}
}
import checkUpdate from '@/uni_modules/uni-upgrade-center-app/utils/check-update';
export default {
onLaunch: async function() {
console.log('App Launch')
checkUpdate() //更新升级
},
mounted() {
// #ifdef H5
//const VConsole = require('@/common/js/vconsole.min.js')
//new VConsole()
// #endif
},
onShow: function() {
console.log('App Show')
},
onHide: function() {
console.log('App Hide')
}
}
</script>
<style>
/*每个页面公共css */
/* #ifndef APP-NVUE */
view{
box-sizing: border-box;
}
@font-face {
font-family: "iconfont";
src: url('https://at.alicdn.com/t/font_2354462_s00xh8caffp.ttf');
}
.ico{
font-family: iconfont;
}
/* #endif */
/*每个页面公共css */
/* #ifndef APP-NVUE */
view {
box-sizing: border-box;
}
@font-face {
font-family: "iconfont";
src: url('https://at.alicdn.com/t/font_2354462_s00xh8caffp.ttf');
}
.ico {
font-family: iconfont;
}
/* #endif */
</style>
{
"pages": [ //pages数组中第一项表示应用启动页,参考:https://uniapp.dcloud.io/collocation/pages
{
"path": "pages/cloudFunction/cloudFunction",
"style": {
"navigationBarTitleText": "云函数",
"enablePullDownRefresh": false
}
},
{
"path": "pages/cloudObject/cloudObject",
"style": {
"navigationBarTitleText": "云对象",
"enablePullDownRefresh": false
}
},
{
"path": "pages/test/test",
"style": {
"navigationBarTitleText": "",
"enablePullDownRefresh": false
}
},
{
"path": "pages/clientDB/unicloud-db-demo/unicloud-db-demo",
"style": {
"navigationBarTitleText": "unicloud-db demo",
"enablePullDownRefresh": false
}
},
{
"path": "pages/clientDB/demo/demo",
"style": {
"navigationBarTitleText": "留言板",
"enablePullDownRefresh": false
}
},
{
"path": "pages/clientDB/permission-table-simple/permission-table-simple",
"style": {
"navigationBarTitleText": "表级-简单权限控制",
"enablePullDownRefresh": false
}
},
{
"path": "pages/clientDB/permission-table-compound/permission-table-compound",
"style": {
"navigationBarTitleText": "表级-复杂权限控制",
"enablePullDownRefresh": false
}
"pages": [ //pages数组中第一项表示应用启动页,参考:https://uniapp.dcloud.io/collocation/pages
{
"path": "pages/cloudFunction/cloudFunction",
"style": {
"navigationBarTitleText": "云函数",
"enablePullDownRefresh": false
}
},
{
"path": "pages/cloudObject/cloudObject",
"style": {
"navigationBarTitleText": "云对象",
"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": {
"navigationBarTitleText": "",
"enablePullDownRefresh": false
}
},
{
"path": "pages/clientDB/unicloud-db-demo/unicloud-db-demo",
"style": {
"navigationBarTitleText": "unicloud-db demo",
"enablePullDownRefresh": false
}
},
{
"path": "pages/clientDB/demo/demo",
"style": {
"navigationBarTitleText": "留言板",
"enablePullDownRefresh": false
}
},
{
"path": "pages/clientDB/permission-table-simple/permission-table-simple",
"style": {
"navigationBarTitleText": "表级-简单权限控制",
"enablePullDownRefresh": false
}
},
{
"path": "pages/clientDB/permission-table-compound/permission-table-compound",
"style": {
"navigationBarTitleText": "表级-复杂权限控制",
"enablePullDownRefresh": false
}
},
{
"path": "pages/clientDB/clientDB",
"style": {
"navigationBarTitleText": "前端操作数据库",
"enablePullDownRefresh": false
}
},
{
"path": "pages/user-info/add",
"style": {
"navigationBarTitleText": "新增"
}
}, {
"path": "pages/user-info/edit",
"style": {
"navigationBarTitleText": "修改"
}
}, {
"path": "pages/user-info/list",
"style": {
"navigationBarTitleText": "列表"
}
}, {
"path": "pages/user-info/detail",
"style": {
"navigationBarTitleText": "详情"
}
},
{
"path": "pages/storage/storage",
"style": {
"navigationBarTitleText": "云存储",
"enablePullDownRefresh": false
}
},
{
"path": "pages/schema2code/schema2code",
"style": {
"navigationBarTitleText": "schema2code",
"enablePullDownRefresh": false
}
},
{
"path": "pages/clientDB/permission/permission",
"style": {
"navigationBarTitleText": "角色权限",
"enablePullDownRefresh": false
}
},
{
"path": "pages/clientDB/permission-demo/permission-demo",
"style": {
"navigationBarTitleText": "角色权限",
"enablePullDownRefresh": false
}
},
{
"path": "pages/clientDB/permission-demo/readme",
"style": {
"navigationBarTitleText": "角色权限",
"enablePullDownRefresh": false
}
},
{
"path": "pages/clientDB/permission-field-simple/permission-field-simple",
"style": {
"navigationBarTitleText": "简单-字段级权限控制",
"enablePullDownRefresh": false
}
},
{
"path": "pages/clientDB/clientDB-api/clientDB-api",
"style": {
"navigationBarTitleText": "前端操作数据库的API",
"enablePullDownRefresh": false
}
},
{
"path": "pages/clientDB/validate/validate",
"style": {
"navigationBarTitleText": "字段值域验证",
"enablePullDownRefresh": false
}
},
{
"path": "pages/clientDB/clientDB",
"style": {
"navigationBarTitleText": "前端操作数据库",
"enablePullDownRefresh": false
}
},
{
"path": "pages/user-info/add",
"style": {
"navigationBarTitleText": "新增"
}
}, {
"path": "pages/user-info/edit",
"style": {
"navigationBarTitleText": "修改"
}
}, {
"path": "pages/user-info/list",
"style": {
"navigationBarTitleText": "列表"
}
}, {
"path": "pages/user-info/detail",
"style": {
"navigationBarTitleText": "详情"
}
},
{
"path": "pages/storage/storage",
"style": {
"navigationBarTitleText": "云存储",
"enablePullDownRefresh": false
}
},
{
"path": "pages/schema2code/schema2code",
"style": {
"navigationBarTitleText": "schema2code",
"enablePullDownRefresh": false
}
},
{
"path": "pages/clientDB/permission/permission",
"style": {
"navigationBarTitleText": "角色权限",
"enablePullDownRefresh": false
}
},
{
"path": "pages/clientDB/permission-demo/permission-demo",
"style": {
"navigationBarTitleText": "角色权限",
"enablePullDownRefresh": false
}
},
{
"path": "pages/clientDB/permission-demo/readme",
"style": {
"navigationBarTitleText": "角色权限",
"enablePullDownRefresh": false
}
},
{
"path": "pages/clientDB/permission-field-simple/permission-field-simple",
"style": {
"navigationBarTitleText": "简单-字段级权限控制",
"enablePullDownRefresh": false
}
},
{
"path": "pages/clientDB/clientDB-api/clientDB-api",
"style": {
"navigationBarTitleText": "前端操作数据库的API",
"enablePullDownRefresh": false
}
},
{
"path": "pages/clientDB/validate/validate",
"style": {
"navigationBarTitleText": "字段值域验证",
"enablePullDownRefresh": false
}
}, {
"path": "pages/validate-demo/add",
"style": {
"navigationBarTitleText": "新增"
}
}, {
"path": "pages/validate-demo/edit",
"style": {
"navigationBarTitleText": "修改"
}
}, {
"path": "pages/validate-demo/list",
"style": {
"navigationBarTitleText": ""
}
}, {
"path": "pages/validate-demo/detail",
"style": {}
}, {
"path": "pages/webview/webview",
"style": {
"navigationBarTitleText": "",
"enablePullDownRefresh": false
}
}, {
"path": "pages/validate-demo/add",
"style": {
"navigationBarTitleText": "新增"
}
}, {
"path": "pages/validate-demo/edit",
"style": {
"navigationBarTitleText": "修改"
}
}, {
"path": "pages/validate-demo/list",
"style": {
"navigationBarTitleText": ""
}
}, {
"path": "pages/validate-demo/detail",
"style": {}
}, {
"path": "pages/webview/webview",
"style": {
"navigationBarTitleText": "",
"enablePullDownRefresh": false
}
},
{
"path": "uni_modules/uni-upgrade-center-app/pages/upgrade-popup",
"style": {
"disableScroll": true,
"app-plus": {
"backgroundColorTop": "transparent",
"background": "transparent",
"titleNView": false,
"scrollIndicator": false,
"popGesture": "none",
"animationType": "fade-in",
"animationDuration": 200
},
{
"path": "uni_modules/uni-upgrade-center-app/pages/upgrade-popup",
"style": {
"disableScroll": true,
"app-plus": {
"backgroundColorTop": "transparent",
"background": "transparent",
"titleNView": false,
"scrollIndicator": false,
"popGesture": "none",
"animationType": "fade-in",
"animationDuration": 200
}
}
}, {
"path": "pages/cloudFunction/redis/redis",
"style": {
"navigationBarTitleText": "扩展能力Redis",
"enablePullDownRefresh": false
}
}
,{
"path": "uni_modules/uni-upgrade-center/pages/version/list",
"style": {
}
}
}, {
"path": "pages/cloudFunction/redis/redis",
"style": {
"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": {
}
}, {
"path": "uni_modules/uni-upgrade-center/pages/version/add",
"style": {
"navigationBarTitleText": "新版发布"
}
}
,{
"path": "uni_modules/uni-upgrade-center/pages/version/detail",
"style": {
}
}, {
"path": "uni_modules/uni-upgrade-center/pages/version/detail",
"style": {
"navigationBarTitleText": "版本信息查看"
}
}
}
],
"tabBar": {
"color": "#7A7E83",
"selectedColor": "#1296db",
"borderStyle": "black",
"backgroundColor": "#ffffff",
"list": [{
"pagePath": "pages/cloudFunction/cloudFunction",
"iconPath": "static/tabbar/fn.png",
"selectedIconPath": "static/tabbar/fn1.png",
"text": "云函数"
},
{
"pagePath": "pages/cloudObject/cloudObject",
"iconPath": "static/tabbar/obj.png",
"selectedIconPath": "static/tabbar/obj1.png",
"text": "云对象"
},
{
"pagePath": "pages/storage/storage",
"iconPath": "static/tabbar/storage.png",
"selectedIconPath": "static/tabbar/storage1.png",
"text": "云存储"
},
{
"pagePath": "pages/clientDB/clientDB",
"iconPath": "static/tabbar/yun.png",
"selectedIconPath": "static/tabbar/yun1.png",
"text": "clientDB"
}, {
"pagePath": "pages/schema2code/schema2code",
"iconPath": "/static/tabbar/st-code.png",
"selectedIconPath": "static/tabbar/st-code1.png",
"text": "schema2code"
}
]
},
"globalStyle": {
"navigationBarTextStyle": "black",
"navigationBarTitleText": "uni-app",
"navigationBarBackgroundColor": "#F8F8F8",
"backgroundColor": "#F8F8F8"
}
],
"tabBar": {
"color": "#7A7E83",
"selectedColor": "#1296db",
"borderStyle": "black",
"backgroundColor": "#ffffff",
"list": [{
"pagePath": "pages/cloudFunction/cloudFunction",
"iconPath": "static/tabbar/fn.png",
"selectedIconPath": "static/tabbar/fn1.png",
"text": "云函数"
},
{
"pagePath": "pages/cloudObject/cloudObject",
"iconPath": "static/tabbar/obj.png",
"selectedIconPath": "static/tabbar/obj1.png",
"text": "云对象"
},
{
"pagePath": "pages/storage/storage",
"iconPath": "static/tabbar/storage.png",
"selectedIconPath": "static/tabbar/storage1.png",
"text": "云存储"
},
{
"pagePath": "pages/clientDB/clientDB",
"iconPath": "static/tabbar/yun.png",
"selectedIconPath": "static/tabbar/yun1.png",
"text": "clientDB"
}, {
"pagePath": "pages/schema2code/schema2code",
"iconPath": "/static/tabbar/st-code.png",
"selectedIconPath": "static/tabbar/st-code1.png",
"text": "schema2code"
}
]
},
"globalStyle": {
"navigationBarTextStyle": "black",
"navigationBarTitleText": "uni-app",
"navigationBarBackgroundColor": "#F8F8F8",
"backgroundColor": "#F8F8F8"
}
}
......@@ -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.
先完成此消息的编辑!
想要评论请 注册