提交 d7189d46 编写于 作者: L linju

123

上级 4912b726
...@@ -5,7 +5,7 @@ export default function (){ ...@@ -5,7 +5,7 @@ export default function (){
initAppVersion(); initAppVersion();
// 检查更新 // 检查更新
checkUpdate(); // checkUpdate();
} }
/** /**
......
/*
1.优雅访问指定路由地址
2.load自动显示与关闭
3.统一路由拦截
3.1 读取云端接口权限配置,先验证本地token再访问
3.2 处理因token过期等问题自动更新本地token,或token无效跳转至登陆页面
*/
const debug = true;//开启后,会alert错误信息
export default function request(name,params,callback,{showLoading=false,loadText='',fail=()=>{}}={}){
console.log('request');
showLoading||loadText? uni.showLoading({title:loadText}):'';
let routers = name.split('/');
var action = false
if (routers.length>1){
name = routers[0]
action = routers[1]
}
console.log({name,data: {action,params}})
return uniCloud.callFunction({name,data: {action,params},
success(e){
console.log(e);
if(showLoading || loadText) uni.hideLoading()
const res = e.result
if (res.code === 0 ) {
return callback(res.data, e.result, e)
}
debug? uni.showModal({content: JSON.stringify(e)}) :'';
},
fail(err){
console.log(err);
debug? uni.showModal({content: JSON.stringify(err)}) :'';
fail(err)
}
})
}
\ No newline at end of file
...@@ -2,7 +2,10 @@ import Vue from 'vue' ...@@ -2,7 +2,10 @@ import Vue from 'vue'
import App from './App' import App from './App'
import store from './store/index.js'; import store from './store/index.js';
import request from './js_sdk/request.js';
Vue.config.productionTip = false Vue.config.productionTip = false
Vue.prototype.request = request
App.mpType = 'app' App.mpType = 'app'
......
...@@ -180,34 +180,33 @@ ...@@ -180,34 +180,33 @@
} }
} }
], ,{
"path" : "pages/test/test",
"style" :
{
"navigationBarTitleText": "",
"enablePullDownRefresh": false
}
}
],
"globalStyle": { "globalStyle": {
"navigationBarTextStyle": "black", "navigationBarTextStyle": "black",
"navigationBarTitleText": "base-app", "navigationBarTitleText": "base-app",
"navigationBarBackgroundColor": "#FFFFFF", "navigationBarBackgroundColor": "#FFFFFF",
"backgroundColor": "#F8F8F8" "backgroundColor": "#F8F8F8"
}, },
// "condition": { "condition": {
// "list": [{ "list": [
// "path": "uni_modules/uni-login-page/pages/index/index", {
// "style": { "path": "uni_modules/uni-login-page/pages/index/index"
// "navigationBarTitleText": "", },
// "app-plus": { {
// "animationType": "none", "path": "pages/test/test"
// "popGesture": "none", }
// "titleNView": { ],
// "buttons": [{ "current":0
// "text": "帮助", },
// "type": "none",
// "fontSize": "16px",
// "width": "60px"
// }]
// }
// }
// }
// }],
// "current": 0
// },
"tabBar": { "tabBar": {
"color": "#7A7E83", "color": "#7A7E83",
"selectedColor": "#007AFF", "selectedColor": "#007AFF",
......
...@@ -16,7 +16,7 @@ ...@@ -16,7 +16,7 @@
searchText: '', searchText: '',
canSearch:true canSearch:true
}; };
}, },
onShow(options) { onShow(options) {
this.searchText = getApp().globalData.searchText; this.searchText = getApp().globalData.searchText;
}, },
......
<template>
<view>
test
</view>
</template>
<script>
export default {
data() {
return {
}
},
onLoad() {
this.request('user-center/login_by_',{},e=>{
console.log(e);
})
},
methods: {
}
}
</script>
<style>
</style>
{ {
"bsonType": "object", "bsonType": "object",
"permission": { "permission": {
"read": true, "read": "'read' in auth.permission",
"create": false, "create": false,
"update": "doc._id == auth.uid", "update": "doc._id == auth.uid",
"delete": false "delete": false
......
{ {
"name": "uni-id", "name": "uni-id",
"version": "3.0.8", "version": "3.0.8",
"lockfileVersion": 1, "lockfileVersion": 2,
"requires": true, "requires": true,
"dependencies": { "packages": {
"uni-config-center": { "": {
"version": "file:../../../../../uni-config-center/uniCloud/cloudfunctions/common/uni-config-center" "version": "3.0.8",
} "license": "Apache-2.0",
"dependencies": {
"uni-config-center": "file:../../../../../uni-config-center/uniCloud/cloudfunctions/common/uni-config-center"
}
},
"../../../../../uni-config-center/uniCloud/cloudfunctions/common/uni-config-center": {
"version": "0.0.1",
"license": "Apache-2.0"
},
"node_modules/uni-config-center": {
"resolved": "../../../../../uni-config-center/uniCloud/cloudfunctions/common/uni-config-center",
"link": true
} }
},
"dependencies": {
"uni-config-center": {
"version": "file:../../../../../uni-config-center/uniCloud/cloudfunctions/common/uni-config-center"
}
}
} }
...@@ -97,7 +97,7 @@ ...@@ -97,7 +97,7 @@
login(type) { login(type) {
let oauthService = this.oauthServices.find((service) => service.id == type) let oauthService = this.oauthServices.find((service) => service.id == type)
// #ifdef APP-PLUS // #ifdef APP-PLUS
uni.showLoading({mask: true}); //uni.showLoading({mask: true});
//请勿直接使用前端获取的unionid或openid直接用于登陆,前端的数据都是不可靠的 //请勿直接使用前端获取的unionid或openid直接用于登陆,前端的数据都是不可靠的
if(type=='weixin'){ if(type=='weixin'){
...@@ -131,46 +131,25 @@ ...@@ -131,46 +131,25 @@
}) })
// #endif // #endif
}, },
quickLogin(params,type){ quickLogin(params,type){//联网验证登陆
console.log({params,type}); console.log(params,type);
uniCloud.callFunction({//联网验证登陆 this.request('user-center/login_by_'+type,params,(data,result)=>{
"name": "user-center", console.log(result);
"data": { if(result.code === 0){
"action": "login_by_"+type, uni.setStorageSync('uni_id_uid', result.uid)
params uni.setStorageSync('uni_id_token', result.token)
}, uni.setStorageSync('uni_id_token_expired', result.tokenExpired)
success:async (e) => {
uni.hideLoading() delete result.userInfo.token
console.log(e.result); this.setUserInfo(result.userInfo)
// uni.showModal({ if(type=='univerify'){
// content: JSON.stringify(e.result), uni.closeAuthView()
// showCancel: false
// });
if(e.result.code === 0){
uni.setStorageSync('uni_id_uid', e.result.uid)
uni.setStorageSync('uni_id_token', e.result.token)
uni.setStorageSync('uni_id_token_expired', e.result.tokenExpired)
// console.log('66666=',e.result.uid,e.result.token,e.result.tokenExpired);
delete e.result.userInfo.token
this.setUserInfo(e.result.userInfo)
if(type=='univerify'){
uni.closeAuthView()
}
uni.showToast({
title: '登陆成功',
icon: 'none'
});
uni.navigateBack()
} }
}, uni.showToast({
fail: (err) => { title: '登陆成功',
console.log(err); icon: 'none'
if(err.errCode===30002){ });
uni.navigateBack()
}
},
complete: () => {
uni.hideLoading()
} }
}) })
}, },
......
'use strict'; 'use strict';
const uniID = require('uni-id') let uniID = require('uni-id')
const uniCaptcha = require('uni-captcha') const uniCaptcha = require('uni-captcha')
const db = uniCloud.database() const db = uniCloud.database()
const dbCmd = db.command const dbCmd = db.command
exports.main = async (event, context) => { exports.main = async (event, context) => {
/**
* UNI_WYQ:这里的uniID换成新的,保证多人访问不会冲突
*/
uniID = uniID.createInstance({
context
})
//event为客户端上传的参数 //event为客户端上传的参数
console.log('event : ' + event) console.log('event : ' + event)
let params = event.params || {} let params = event.params || {}
......
{ {
"name": "user-center", "name": "user-center",
"version": "1.0.0", "version": "1.0.0",
"lockfileVersion": 1, "lockfileVersion": 1
"requires": true,
"dependencies": {
"uni-captcha": {
"version": "file:../../../../uni-captcha/uniCloud/cloudfunctions/common/uni-captcha"
},
"uni-config-center": {
"version": "file:../../../../uni-config-center/uniCloud/cloudfunctions/common/uni-config-center"
},
"uni-id": {
"version": "file:../../../../uni-id/uniCloud/cloudfunctions/common/uni-id",
"requires": {
"uni-config-center": "file:../../../../uni-config-center/uniCloud/cloudfunctions/common/uni-config-center"
},
"dependencies": {
"uni-config-center": {
"version": "file:../../../../uni-config-center/uniCloud/cloudfunctions/common/uni-config-center"
}
}
}
}
} }
'use strict';
const uniID = require('uni-id')
const uniCaptcha = require('uni-captcha')
const db = uniCloud.database()
const dbCmd = db.command
let params,context,res;
class User {
async quickLogin(){
let {access_token,openid,type} = params
switch (type){
case 'weixin':
let userinfo_res = await uniCloud.httpclient.request('https://api.weixin.qq.com/sns/userinfo',
{
method: 'GET',
dataType:"json",
data:{ access_token,openid}
});
return userinfo_res.data//根据access_token,openid得到userinfo
//检查是否已经注册...
break;
case 'univerify':
return uniID.loginByUniverify({access_token,openid})
break;
case 'apple':
return await uniID.loginByApple(params)
break;
default:
return {"code":100,"msg":"暂不提供"+type+"登陆的云端接口演示"}
break;
}
}
async sendSmsCode(){
// 简单限制一下客户端调用频率
const ipLimit = await db.collection('uni-verify').where({
ip: context.CLIENTIP,
created_at: dbCmd.gt(Date.now() - 60000)
}).get()
if (ipLimit.data.length > 0) {
return {
code: 429,
msg: '请求过于频繁'
}
}
const templateId = '11753' // 替换为自己申请的模板id
if (!templateId) {
return {
code: 500,
msg: 'sendSmsCode需要传入自己的templateId,参考https://uniapp.dcloud.net.cn/uniCloud/uni-id?id=sendsmscode'
}
}
const randomStr = '00000' + Math.floor(Math.random() * 1000000)
const code = randomStr.substring(randomStr.length - 6)
return await uniID.sendSmsCode({
mobile: params.mobile,
code,
type: params.type,
templateId
})
}
}
const userClass = new User();
exports.main = async (event, ctx) => {
[{params},context] = [event,ctx]
//1.判断需要token的action是否有token
/*let noCheckAction = ['register', 'loginByWeixin', 'checkToken','login', 'logout', 'sendSmsCode','loginBySms', 'inviteLogin', 'loginByUniverify','loginByApple', 'createCaptcha', 'verifyCaptcha','refreshCaptcha']
if(!noCheckAction.includes(event.action)) {
if (!event.uniIdToken) {
return {"code":403,"msg":"缺少token"}
}
let payload = {}
payload = await uniID.checkToken(event.uniIdToken)
if (payload.code && payload.code > 0) {
return payload
}
params.uid = payload.uid
}*/
try{
return await userClass[event.action]()||res;
}catch(err){
return {"code":404,"msg":err}
}
}
\ No newline at end of file
{
"name": "user",
"version": "1.0.0",
"lockfileVersion": 2,
"requires": true,
"packages": {
"": {
"version": "1.0.0",
"license": "ISC",
"dependencies": {
"uni-captcha": "file:../../../../uni-captcha/uniCloud/cloudfunctions/common/uni-captcha",
"uni-config-center": "file:../../../../uni-config-center/uniCloud/cloudfunctions/common/uni-config-center",
"uni-id": "file:../../../../uni-id/uniCloud/cloudfunctions/common/uni-id"
}
},
"../../../../uni-captcha/uniCloud/cloudfunctions/common/uni-captcha": {
"version": "0.1.0",
"license": "Apache-2.0"
},
"../../../../uni-config-center/uniCloud/cloudfunctions/common/uni-config-center": {
"version": "0.0.1",
"license": "Apache-2.0"
},
"../../../../uni-id/uniCloud/cloudfunctions/common/uni-id": {
"version": "3.0.8",
"license": "Apache-2.0",
"dependencies": {
"uni-config-center": "file:../../../../../uni-config-center/uniCloud/cloudfunctions/common/uni-config-center"
}
},
"node_modules/uni-captcha": {
"resolved": "../../../../uni-captcha/uniCloud/cloudfunctions/common/uni-captcha",
"link": true
},
"node_modules/uni-config-center": {
"resolved": "../../../../uni-config-center/uniCloud/cloudfunctions/common/uni-config-center",
"link": true
},
"node_modules/uni-id": {
"resolved": "../../../../uni-id/uniCloud/cloudfunctions/common/uni-id",
"link": true
}
},
"dependencies": {
"uni-captcha": {
"version": "file:../../../../uni-captcha/uniCloud/cloudfunctions/common/uni-captcha"
},
"uni-config-center": {
"version": "file:../../../../uni-config-center/uniCloud/cloudfunctions/common/uni-config-center"
},
"uni-id": {
"version": "file:../../../../uni-id/uniCloud/cloudfunctions/common/uni-id",
"requires": {
"uni-config-center": "file:../../../../../uni-config-center/uniCloud/cloudfunctions/common/uni-config-center"
}
}
}
}
{
"name": "user",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "",
"license": "ISC",
"dependencies": {
"uni-captcha": "file:../../../../uni-captcha/uniCloud/cloudfunctions/common/uni-captcha",
"uni-config-center": "file:../../../../uni-config-center/uniCloud/cloudfunctions/common/uni-config-center",
"uni-id": "file:../../../../uni-id/uniCloud/cloudfunctions/common/uni-id"
}
}
// 本文件中的json内容将在云函数【运行】时作为参数传给云函数。
// 配置教程参考:https://uniapp.dcloud.net.cn/uniCloud/quickstart?id=runparam
{
"action": "sendSmsCode",
"params": {
"phone":"17769516081"
}
}
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册