提交 710a0132 编写于 作者: DCloud_JSON's avatar DCloud_JSON

1. 强制登陆配置,新增白名单模式 2. 强制登陆配置,支持正则表达式

上级 59eb3a0b
## 1.0.39(2021-07-19)
1. 强制登陆配置,新增白名单模式
2. 强制登陆配置,支持正则表达式
## 1.0.38(2021-07-17) ## 1.0.38(2021-07-17)
删除多余文件 删除多余文件
## 1.0.37(2021-07-14) ## 1.0.37(2021-07-14)
......
...@@ -9,25 +9,25 @@ import interceptorChooseImage from '@/uni_modules/json-interceptor-chooseImage/j ...@@ -9,25 +9,25 @@ import interceptorChooseImage from '@/uni_modules/json-interceptor-chooseImage/j
const db = uniCloud.database() const db = uniCloud.database()
export default async function() { export default async function() {
let loginConfig = uniStarterConfig.router.login let loginConfig = uniStarterConfig.router.login
//清除有配置但设备环境不支持的登陆项 //清除有配置但设备环境不支持的登陆项
// #ifdef APP-PLUS // #ifdef APP-PLUS
await new Promise((callBack)=>{ await new Promise((callBack) => {
plus.oauth.getServices(oauthServices => { plus.oauth.getServices(oauthServices => {
loginConfig = loginConfig.filter(item=>{ loginConfig = loginConfig.filter(item => {
if(["univerify", "weixin", "apple"].includes(item)){ if (["univerify", "weixin", "apple"].includes(item)) {
let index = oauthServices.findIndex(e=>e.id==item) let index = oauthServices.findIndex(e => e.id == item)
if(index==-1){ if (index == -1) {
return false return false
}else{ } else {
return oauthServices[index].nativeClient return oauthServices[index].nativeClient
} }
}else{ } else {
return true return true
} }
}) })
if(loginConfig.includes('univerify')){ //一键登录 功能预登录 if (loginConfig.includes('univerify')) { //一键登录 功能预登录
uni.preLogin({ uni.preLogin({
provider:'univerify', provider: 'univerify',
complete: e => { complete: e => {
console.log(e); console.log(e);
} }
...@@ -42,7 +42,7 @@ export default async function() { ...@@ -42,7 +42,7 @@ export default async function() {
//非app移除:一键登录、苹果登陆;h5移除微信登陆,如果你做微信公众号登陆需要将此行移除 //非app移除:一键登录、苹果登陆;h5移除微信登陆,如果你做微信公众号登陆需要将此行移除
// #ifndef APP-PLUS // #ifndef APP-PLUS
loginConfig = loginConfig.filter(item=>{ loginConfig = loginConfig.filter(item => {
return ![ return ![
'univerify', 'univerify',
'apple', 'apple',
...@@ -56,9 +56,11 @@ export default async function() { ...@@ -56,9 +56,11 @@ export default async function() {
uniStarterConfig.router.login = loginConfig uniStarterConfig.router.login = loginConfig
// uniStarterConfig挂载到getApp().globalData.config // uniStarterConfig挂载到getApp().globalData.config
setTimeout(()=>{ setTimeout(() => {
getApp({allowDefault: true}).globalData.config = uniStarterConfig; getApp({
},1) allowDefault: true
}).globalData.config = uniStarterConfig;
}, 1)
// 初始化appVersion(仅app生效) // 初始化appVersion(仅app生效)
...@@ -77,16 +79,16 @@ export default async function() { ...@@ -77,16 +79,16 @@ export default async function() {
}) { }) {
console.log('onDBError'); console.log('onDBError');
// 处理错误 // 处理错误
console.log(code,message); console.log(code, message);
if([ if ([
'TOKEN_INVALID_INVALID_CLIENTID', 'TOKEN_INVALID_INVALID_CLIENTID',
'TOKEN_INVALID', 'TOKEN_INVALID',
'TOKEN_INVALID_TOKEN_EXPIRED', 'TOKEN_INVALID_TOKEN_EXPIRED',
'TOKEN_INVALID_WRONG_TOKEN', 'TOKEN_INVALID_WRONG_TOKEN',
'TOKEN_INVALID_ANONYMOUS_USER', 'TOKEN_INVALID_ANONYMOUS_USER',
].includes(code)){ ].includes(code)) {
uni.navigateTo({ uni.navigateTo({
url:'/pages/ucenter/login-page/index/index' url: '/pages/ucenter/login-page/index/index'
}) })
} }
} }
...@@ -99,7 +101,10 @@ export default async function() { ...@@ -99,7 +101,10 @@ export default async function() {
token, token,
tokenExpired tokenExpired
}) { }) {
console.log('监听到clientDB的refreshToken',{token,tokenExpired}); console.log('监听到clientDB的refreshToken', {
token,
tokenExpired
});
store.commit('user/login', { store.commit('user/login', {
token, token,
tokenExpired tokenExpired
...@@ -109,81 +114,84 @@ export default async function() { ...@@ -109,81 +114,84 @@ export default async function() {
const Debug = true; const Debug = true;
//拦截器封装callFunction //拦截器封装callFunction
let callFunctionOption; let callFunctionOption;
uniCloud.addInterceptor('callFunction',{ uniCloud.addInterceptor('callFunction', {
async invoke(option){ async invoke(option) {
// #ifdef APP-PLUS // #ifdef APP-PLUS
// 判断如果是执行登陆(无论是哪种登陆方式),就记录用户的相关设备id // 判断如果是执行登陆(无论是哪种登陆方式),就记录用户的相关设备id
if(option.name == 'uni-id-cf'&&(option.data.action == 'register' || option.data.action.slice(0,5) =='login')){ if (option.name == 'uni-id-cf' && (option.data.action == 'register' || option.data.action.slice(0, 5) == 'login')) {
let oaid = await new Promise((callBack,fail)=>{ let oaid = await new Promise((callBack, fail) => {
if (uni.getSystemInfoSync().platform == "android") { if (uni.getSystemInfoSync().platform == "android") {
plus.device.getOAID({ plus.device.getOAID({
success:function(e){ success: function(e) {
callBack(e.oaid) callBack(e.oaid)
// console.log('getOAID success: '+JSON.stringify(e)); // console.log('getOAID success: '+JSON.stringify(e));
}, },
fail:function(e){ fail: function(e) {
callBack() callBack()
console.log('getOAID failed: '+JSON.stringify(e)); console.log('getOAID failed: ' + JSON.stringify(e));
} }
}); });
}else{ } else {
callBack() callBack()
} }
}) })
let imei = await new Promise((callBack,fail)=>{ let imei = await new Promise((callBack, fail) => {
if (uni.getSystemInfoSync().platform == "android") { if (uni.getSystemInfoSync().platform == "android") {
plus.device.getInfo({ plus.device.getInfo({
success:function(e){ success: function(e) {
callBack(e.imei) callBack(e.imei)
// console.log('getOAID success: '+JSON.stringify(e)); // console.log('getOAID success: '+JSON.stringify(e));
}, },
fail:function(e){ fail: function(e) {
callBack() callBack()
console.log('getOAID failed: '+JSON.stringify(e)); console.log('getOAID failed: ' + JSON.stringify(e));
} }
}); });
}else{ } else {
callBack() callBack()
} }
}) })
let push_clientid = '', let push_clientid = '',
idfa = plus.storage.getItem('idfa')||'';//idfa有需要的用户在应用首次启动时自己获取存储到storage中 idfa = plus.storage.getItem('idfa') || ''; //idfa有需要的用户在应用首次启动时自己获取存储到storage中
try{ try {
push_clientid = plus.push.getClientInfo().clientid push_clientid = plus.push.getClientInfo().clientid
}catch(e){ } catch (e) {
uni.showModal({ uni.showModal({
content: '获取推送标识失败。如果你的应用不需要推送功能,请注释掉本代码块', content: '获取推送标识失败。如果你的应用不需要推送功能,请注释掉本代码块',
showCancel: false, showCancel: false,
confirmText:"好的" confirmText: "好的"
}); });
console.log(e) console.log(e)
} }
let deviceInfo = { let deviceInfo = {
push_clientid,// 获取匿名设备标识符 push_clientid, // 获取匿名设备标识符
imei,oaid,idfa imei,
oaid,
idfa
} }
console.log("重新登陆/注册,获取设备id",deviceInfo); console.log("重新登陆/注册,获取设备id", deviceInfo);
option.data.deviceInfo = deviceInfo option.data.deviceInfo = deviceInfo
// #ifndef H5 // #ifndef H5
//注册可能不仅仅走register接口,还有登陆并注册的接口 //注册可能不仅仅走register接口,还有登陆并注册的接口
option.data.inviteCode = await new Promise((callBack)=>{ option.data.inviteCode = await new Promise((callBack) => {
uni.getClipboardData({ uni.getClipboardData({
success: function (res) { success: function(res) {
if(res.data.slice(0,18) =='uniInvitationCode:'){ if (res.data.slice(0, 18) == 'uniInvitationCode:') {
let uniInvitationCode = res.data.slice(18,38) let uniInvitationCode = res.data.slice(18, 38)
console.log('当前用户是其他用户推荐下载的,推荐者的code是:'+uniInvitationCode); console.log('当前用户是其他用户推荐下载的,推荐者的code是:' +
uniInvitationCode);
// uni.showModal({ // uni.showModal({
// content: '当前用户是其他用户推荐下载的,推荐者的code是:'+uniInvitationCode, // content: '当前用户是其他用户推荐下载的,推荐者的code是:'+uniInvitationCode,
// showCancel: false // showCancel: false
// }); // });
callBack(uniInvitationCode) callBack(uniInvitationCode)
//当前用户是其他用户推荐下载的。这里登记他的推荐者id 为当前用户的myInviteCode。判断如果是注册 //当前用户是其他用户推荐下载的。这里登记他的推荐者id 为当前用户的myInviteCode。判断如果是注册
}else{ } else {
callBack(false) callBack(false)
} }
}, },
...@@ -198,26 +206,26 @@ export default async function() { ...@@ -198,26 +206,26 @@ export default async function() {
// console.log(JSON.stringify(option)); // console.log(JSON.stringify(option));
callFunctionOption = option callFunctionOption = option
}, },
complete(e){ complete(e) {
// console.log(JSON.stringify(e)); // console.log(JSON.stringify(e));
}, },
fail(e) { // 失败回调拦截 fail(e) { // 失败回调拦截
if(Debug){ if (Debug) {
uni.showModal({ uni.showModal({
content:JSON.stringify(e), content: JSON.stringify(e),
showCancel: false showCancel: false
}); });
console.error(e); console.error(e);
}else{ } else {
uni.showModal({ uni.showModal({
content: "系统错误请稍后再试!", content: "系统错误请稍后再试!",
showCancel: false, showCancel: false,
confirmText:"知道了" confirmText: "知道了"
}); });
} }
//如果执行错误,检查是否断网 //如果执行错误,检查是否断网
uni.getNetworkType({ uni.getNetworkType({
complete:res => { complete: res => {
// console.log(res); // console.log(res);
if (res.networkType == 'none') { if (res.networkType == 'none') {
uni.showToast({ uni.showToast({
...@@ -225,16 +233,16 @@ export default async function() { ...@@ -225,16 +233,16 @@ export default async function() {
icon: 'none' icon: 'none'
}); });
console.log('手机网络异常'); console.log('手机网络异常');
let callBack = res=>{ let callBack = res => {
console.log(res); console.log(res);
if (res.isConnected) { if (res.isConnected) {
uni.showToast({ uni.showToast({
title: '恢复联网自动重新执行', title: '恢复联网自动重新执行',
icon: 'none' icon: 'none'
}); });
console.log(res.networkType,"恢复联网自动重新执行"); console.log(res.networkType, "恢复联网自动重新执行");
uni.offNetworkStatusChange(e=>{ uni.offNetworkStatusChange(e => {
console.log("移除监听成功",e); console.log("移除监听成功", e);
}) })
//恢复联网自动重新执行 //恢复联网自动重新执行
uniCloud.callFunction(callFunctionOption) uniCloud.callFunction(callFunctionOption)
...@@ -246,16 +254,19 @@ export default async function() { ...@@ -246,16 +254,19 @@ export default async function() {
} }
}); });
}, },
success:(e)=>{ success: (e) => {
console.log(e); console.log(e);
const {token,tokenExpired} = e.result const {
token,
tokenExpired
} = e.result
if (token && tokenExpired) { if (token && tokenExpired) {
store.commit('user/login', { store.commit('user/login', {
token, token,
tokenExpired tokenExpired
}) })
} }
switch (e.result.code){ switch (e.result.code) {
case 403: case 403:
uni.navigateTo({ uni.navigateTo({
url: "/pages/ucenter/login-page/index/index" url: "/pages/ucenter/login-page/index/index"
...@@ -270,49 +281,81 @@ export default async function() { ...@@ -270,49 +281,81 @@ export default async function() {
uni.showToast({ uni.showToast({
title: e.result.msg, title: e.result.msg,
icon: 'none', icon: 'none',
duration:2000 duration: 2000
}); });
break; break;
default: default:
console.log('code的值是:'+e.result.code,'可以在这里插入,自动处理响应体'); console.log('code的值是:' + e.result.code, '可以在这里插入,自动处理响应体');
break; break;
} }
} }
}) })
//自定义路由拦截 //自定义路由拦截
const {"router": {needLogin,login} } = uniStarterConfig //需要登录的页面 const {
"router": {
needLogin,
visitor,
login
}
} = uniStarterConfig //需要登录的页面
let list = ["navigateTo", "redirectTo", "reLaunch", "switchTab"]; let list = ["navigateTo", "redirectTo", "reLaunch", "switchTab"];
list.forEach(item => { //用遍历的方式分别为,uni.navigateTo,uni.redirectTo,uni.reLaunch,uni.switchTab这4个路由方法添加拦截器 list.forEach(item => { //用遍历的方式分别为,uni.navigateTo,uni.redirectTo,uni.reLaunch,uni.switchTab这4个路由方法添加拦截器
uni.addInterceptor(item, { uni.addInterceptor(item, {
invoke(e) { // 调用前拦截 invoke(e) { // 调用前拦截
// console.log(e); // console.log(e);
//获取用户的token //获取用户的token
const token = uni.getStorageSync('uni_id_token') const token = uni.getStorageSync('uni_id_token'),
//token是否已失效 //token是否已失效
const tokenExpired = uni.getStorageSync('uni_id_token_expired') < Date.now() tokenExpired = uni.getStorageSync('uni_id_token_expired') < Date.now(),
//获取当前页面路径(即url去掉"?"和"?"后的参数) //获取要跳转的页面路径(url去掉"?"和"?"后的参数)
const url = e.url.split('?')[0] url = e.url.split('?')[0],
//获取要前往的页面路径(即url去掉"?"和"?"后的参数)
pages = getCurrentPages(),
fromUrl = pages[pages.length - 1].route;
let inLoginPage = fromUrl.split('/')[2] == 'login-page'
//控制登录优先级 //控制登录优先级
let pages = getCurrentPages();
if ( //判断当前窗口是否为登陆页面,如果是则不重定向路由 if ( //判断当前窗口是否为登陆页面,如果是则不重定向路由
url == '/pages/ucenter/login-page/index/index' url == '/pages/ucenter/login-page/index/index' &&
&& !inLoginPage
pages[pages.length - 1].route.split('/')[2]!='login-page'
) { ) {
// console.log(9527777,login);
console.log(9527777,login);
//一键登录(univerify)、账号(username)、验证码登录(短信smsCode) //一键登录(univerify)、账号(username)、验证码登录(短信smsCode)
if (login[0] == 'username') { if (login[0] == 'username') {
e.url = "/pages/ucenter/login-page/pwd-login/pwd-login" e.url = "/pages/ucenter/login-page/pwd-login/pwd-login"
}else{ } else {
if(e.url == url) { e.url += '?' } //添加参数之前判断是否带了`?`号如果没有就补上,因为当开发场景本身有参数的情况下是已经带了`?`号 if (e.url == url) {
e.url += "type="+login[0] e.url += '?'
} //添加参数之前判断是否带了`?`号如果没有就补上,因为当开发场景本身有参数的情况下是已经带了`?`号
e.url += "type=" + login[0]
} }
}else{ } else {
//拦截强制登录页面 //拦截强制登录页面
if (needLogin.includes(url) && (token == ''||tokenExpired)) { let pass = true
//pattern
if (needLogin) {
pass = needLogin.every((item) => {
if (item.slice(0, 8) == 'pattern:') {
return !eval(item.slice(8, item.length)).test(url)
}
return url != item
})
// console.log(pass)
}
if (visitor&&!inLoginPage) {
pass = visitor.some((item) => {
if (item.slice(0, 8) == 'pattern:') {
return eval(item.slice(8, item.length)).test(url)
}
return url == item
})
console.log(pass)
}
if (!pass && (token == '' || tokenExpired)) {
uni.showToast({ uni.showToast({
title: '请先登录', title: '请先登录',
icon: 'none' icon: 'none'
...@@ -323,39 +366,40 @@ export default async function() { ...@@ -323,39 +366,40 @@ export default async function() {
return false return false
} }
} }
return e
}, },
fail(err) { // 失败回调拦截 fail(err) { // 失败回调拦截
console.log(err); console.log(err);
if(Debug){ if (Debug) {
console.log(err); console.log(err);
uni.showModal({ uni.showModal({
content: JSON.stringify(err), content: JSON.stringify(err),
showCancel: false showCancel: false
}); });
} }
}, }
}) })
}) })
// #ifdef APP-PLUS // #ifdef APP-PLUS
// 监听并提示设备网络状态变化 // 监听并提示设备网络状态变化
uni.onNetworkStatusChange(res=> { uni.onNetworkStatusChange(res => {
console.log(res.isConnected); console.log(res.isConnected);
console.log(res.networkType); console.log(res.networkType);
if(res.networkType!='none'){ if (res.networkType != 'none') {
uni.showToast({ uni.showToast({
title:'当前网络类型:'+res.networkType, title: '当前网络类型:' + res.networkType,
icon:'none', icon: 'none',
duration:3000 duration: 3000
}) })
}else{ } else {
uni.showToast({ uni.showToast({
title:'网络类型:'+res.networkType, title: '网络类型:' + res.networkType,
icon:'none', icon: 'none',
duration:3000 duration: 3000
}) })
} }
}); });
// #endif // #endif
} }
/** /**
......
{ {
"name" : "uni-starter", "name": "uni-starter",
"appid" : "__UNI__03B096E", "appid": "请点击重新获取",
"description" : "云端一体应用快速开发模版", "description": "云端一体应用快速开发模版",
"versionName" : "1.0.0", "versionName": "1.0.0",
"versionCode" : "100", "versionCode": "100",
"transformPx" : false, "transformPx": false,
"app-plus" : { "app-plus": {
"privacy" : { "privacy": {
"prompt" : "template", "prompt": "template",
"template" : { "template": {
"title" : "服务协议和隐私政策", "title": "服务协议和隐私政策",
"message" : "  请你务必审慎阅读、充分理解“服务协议”和“隐私政策”各条款,包括但不限于:为了更好的向你提供服务,我们需要收集你的设备标识、操作日志等信息用于分析、优化应用性能。<br/>  你可阅读<a href=\"https://ask.dcloud.net.cn/protocol.html\">《服务协议》</a>和<a href=\"https://ask.dcloud.net.cn/protocol.html\">《隐私政策》</a>了解详细信息。如果你同意,请点击下面按钮开始接受我们的服务。", "message": "  请你务必审慎阅读、充分理解“服务协议”和“隐私政策”各条款,包括但不限于:为了更好的向你提供服务,我们需要收集你的设备标识、操作日志等信息用于分析、优化应用性能。<br/>  你可阅读<a href=\"https://ask.dcloud.net.cn/protocol.html\">《服务协议》</a>和<a href=\"https://ask.dcloud.net.cn/protocol.html\">《隐私政策》</a>了解详细信息。如果你同意,请点击下面按钮开始接受我们的服务。",
"buttonAccept" : "同意", "buttonAccept": "同意",
"buttonRefuse" : "暂不同意" "buttonRefuse": "暂不同意"
} }
}, },
"compatible" : { "compatible": {
"ignoreVersion" : true "ignoreVersion": true
}, },
"usingComponents" : true, "usingComponents": true,
"nvueStyleCompiler" : "uni-app", "nvueStyleCompiler": "uni-app",
"compilerVersion" : 3, "compilerVersion": 3,
"splashscreen" : { "splashscreen": {
"alwaysShowBeforeRender" : true, "alwaysShowBeforeRender": true,
"waiting" : true, "waiting": true,
"autoclose" : true, "autoclose": true,
"delay" : 0 "delay": 0
}, },
"modules" : { "modules": {
"Fingerprint" : {}, "Fingerprint": {
"Share" : {}, },
"OAuth" : {}, "Share": {
"FaceID" : {}, },
"Push" : {} "OAuth": {
}, },
"distribute" : { "FaceID": {
"android" : { },
"permissions" : [ "Push": {
}
},
"distribute": {
"android": {
"permissions": [
"<uses-feature android:name=\"android.hardware.camera\"/>", "<uses-feature android:name=\"android.hardware.camera\"/>",
"<uses-feature android:name=\"android.hardware.camera.autofocus\"/>", "<uses-feature android:name=\"android.hardware.camera.autofocus\"/>",
"<uses-permission android:name=\"android.permission.ACCESS_NETWORK_STATE\"/>", "<uses-permission android:name=\"android.permission.ACCESS_NETWORK_STATE\"/>",
...@@ -55,65 +60,78 @@ ...@@ -55,65 +60,78 @@
"<uses-permission android:name=\"android.permission.WAKE_LOCK\"/>", "<uses-permission android:name=\"android.permission.WAKE_LOCK\"/>",
"<uses-permission android:name=\"android.permission.WRITE_SETTINGS\"/>" "<uses-permission android:name=\"android.permission.WRITE_SETTINGS\"/>"
], ],
"abiFilters" : [ "armeabi-v7a", "arm64-v8a", "x86" ] "abiFilters": [
}, "armeabi-v7a",
"ios" : { "arm64-v8a",
"capabilities" : { "x86"
"entitlements" : { ]
"com.apple.developer.associated-domains" : [ "applinks:static-76ce2c5e-31c7-4d81-8fcf-ed1541ecbc6e.bspapp.com" ] },
"ios": {
"capabilities": {
"entitlements": {
"com.apple.developer.associated-domains": [
"applinks:static-76ce2c5e-31c7-4d81-8fcf-ed1541ecbc6e.bspapp.com"
]
} }
} }
}, },
"sdkConfigs" : { "sdkConfigs": {
"oauth" : { "oauth": {
"apple" : {}, "apple": {
"weixin" : { },
"appid" : "wxffdd8fa6ec4ef2a0", "weixin": {
"appsecret" : "", "appid": "wxffdd8fa6ec4ef2a0",
"UniversalLinks" : "https://static-76ce2c5e-31c7-4d81-8fcf-ed1541ecbc6e.bspapp.com/uni-universallinks/__UNI__03B096E" "appsecret": "",
}, "UniversalLinks": "https://static-76ce2c5e-31c7-4d81-8fcf-ed1541ecbc6e.bspapp.com/uni-universallinks/__UNI__03B096E"
"univerify" : {} },
}, "univerify": {
"ad" : {}, }
"share" : { },
"weixin" : { "ad": {
"appid" : "wxffdd8fa6ec4ef2a0", },
"UniversalLinks" : "https://static-76ce2c5e-31c7-4d81-8fcf-ed1541ecbc6e.bspapp.com/uni-universallinks/__UNI__03B096E" "share": {
"weixin": {
"appid": "wxffdd8fa6ec4ef2a0",
"UniversalLinks": "https://static-76ce2c5e-31c7-4d81-8fcf-ed1541ecbc6e.bspapp.com/uni-universallinks/__UNI__03B096E"
} }
}, },
"geolocation" : {}, "geolocation": {
"push" : {
"unipush" : {}
}, },
"payment" : {} "push": {
"unipush": {
} }
}, },
"nvueLaunchMode" : "" "payment": {
}
}
},
"nvueLaunchMode": ""
},
"quickapp": {
}, },
"quickapp" : {}, "mp-weixin": {
"mp-weixin" : { "appid": "",
"appid" : "wx81dbb061d2258234", "setting": {
"setting" : { "urlCheck": false,
"urlCheck" : false, "es6": false
"es6" : false
}, },
"usingComponents" : true, "usingComponents": true,
"betterScopedSlots" : true "betterScopedSlots": true
}, },
"mp-alipay" : { "mp-alipay": {
"usingComponents" : true "usingComponents": true
}, },
"mp-baidu" : { "mp-baidu": {
"usingComponents" : true "usingComponents": true
}, },
"mp-toutiao" : { "mp-toutiao": {
"usingComponents" : true "usingComponents": true
}, },
"uniStatistics" : { "uniStatistics": {
"enable" : false "enable": false
}, },
"h5" : { "h5": {
"template" : "" "template": ""
}, },
"_spaceID" : "76ce2c5e-31c7-4d81-8fcf-ed1541ecbc6e" "_spaceID": "76ce2c5e-31c7-4d81-8fcf-ed1541ecbc6e"
} }
\ No newline at end of file
{ {
"id": "uni-starter", "id": "uni-starter",
"displayName": "uni-starter", "displayName": "uni-starter",
"version": "1.0.38", "version": "1.0.39",
"description": "云端一体应用快速开发基本项目模版", "description": "云端一体应用快速开发基本项目模版",
"keywords": [ "keywords": [
"uni-starter", "uni-starter",
......
<template> <template>
<view class="warp"> <view class="warp">
<!-- 搜索 -->
<!-- #ifdef APP-PLUS --> <!-- #ifdef APP-PLUS -->
<status-bar /> <status-bar />
<!-- #endif --> <!-- #endif -->
<uni-search-bar ref="searchBar" style="flex:1;" radius="100" @click.native="searchClick" cancelButton="none" disabled />
<!-- banner --> <!-- banner -->
<unicloud-db ref="bannerdb" v-slot:default="{data, loading, error, options}" collection="opendb-banner" <unicloud-db ref="bannerdb" v-slot:default="{data, loading, error, options}" collection="opendb-banner"
field="_id,bannerfile,open_url,title" @load="load"> field="_id,bannerfile,open_url,title" @load="load">
...@@ -67,13 +65,6 @@ ...@@ -67,13 +65,6 @@
icon: 'none' icon: 'none'
}) })
}, },
searchClick() {
uni.hideKeyboard();
uni.navigateTo({
url: '/pages/list/search/search',
animationType: 'fade-in'
});
},
/** /**
* banner加载后触发的回调 * banner加载后触发的回调
*/ */
...@@ -121,8 +112,6 @@ ...@@ -121,8 +112,6 @@
</script> </script>
<style> <style>
@charset "UTF-8";
/* #ifndef APP-NVUE */ /* #ifndef APP-NVUE */
page { page {
display: flex; display: flex;
...@@ -132,12 +121,10 @@ ...@@ -132,12 +121,10 @@
min-height: 100%; min-height: 100%;
height: auto; height: auto;
} }
view { view {
font-size: 14px; font-size: 14px;
line-height: inherit; line-height: inherit;
} }
.example-body { .example-body {
/* #ifndef APP-NVUE */ /* #ifndef APP-NVUE */
display: flex; display: flex;
...@@ -149,14 +136,12 @@ ...@@ -149,14 +136,12 @@
font-size: 14px; font-size: 14px;
background-color: #ffffff; background-color: #ffffff;
} }
/* #endif */ /* #endif */
/* #ifdef APP-NVUE */ /* #ifdef APP-NVUE */
.warp { .warp {
background-color: #fff; background-color: #fff;
} }
/* #endif */ /* #endif */
.example-body { .example-body {
......
...@@ -40,7 +40,6 @@ import uniShare from 'uni_modules/uni-share/js_sdk/uni-share.js'; ...@@ -40,7 +40,6 @@ import uniShare from 'uni_modules/uni-share/js_sdk/uni-share.js';
}; };
}, },
created() { created() {
console.log();
this.about = this.uniStarterConfig.about this.about = this.uniStarterConfig.about
uni.setNavigationBarTitle({ uni.setNavigationBarTitle({
title:'关于'+this.about.appName title:'关于'+this.about.appName
......
...@@ -87,7 +87,7 @@ ...@@ -87,7 +87,7 @@
}, },
{ {
validateFunction: function(rule, value, data, callback) { validateFunction: function(rule, value, data, callback) {
console.log(value); // console.log(value);
if (value != data.pwd) { if (value != data.pwd) {
callback('两次输入密码不一致') callback('两次输入密码不一致')
}; };
......
...@@ -19,19 +19,33 @@ module.exports = { ...@@ -19,19 +19,33 @@ module.exports = {
} }
}, },
"router": { "router": {
//needLogin:配置强制需要登陆的页面,在打开这些页面之前会自动检查(前端校验)uni_id_token的值是否有效,如果无效会自动跳转到登陆页面 /*
"needLogin": [ 名词解释:“强制登陆页”
"/pages/ucenter/userinfo/userinfo", 在打开定义的需强制登陆的页面之前会自动检查(前端校验)uni_id_token的值是否有效,
"/uni_modules/uni-news-favorite/pages/uni-news-favorite/list", 如果无效会自动跳转到登陆页面
"/uni_modules/uni-feedback/pages/uni-feedback/add" 两种模式:
1.needLogin:黑名单模式。枚举游客不可访问的页面。
2.visitor:白名单模式。枚举游客可访问的页面。
* 注意:黑名单与白名单模式二选一
*/
// "needLogin" : [
// "pattern:/^\\/pages\\/userinfo.*/", //支持正则表达式
// "/uni_modules/uni-news-favorite/pages/uni-news-favorite/list",
// "/uni_modules/uni-feedback/pages/uni-feedback/add"
// ],
"visitor" : [
"/",//注意入口页必须直接写 "/"
"pattern:/^\\/pages\\/list.*/", //支持正则表达式
"/pages/grid/grid",
"/pages/ucenter/ucenter",
"/pages/ucenter/about/about",
], ],
/* /*
login:配置登陆类型与优先级 login:配置登陆类型与优先级
未列举到的,或设备环境不支持的选项,将被隐藏。如果你需要在不同平台有不同的配置,直接用条件编译即可 未列举到的,或设备环境不支持的选项,将被隐藏。如果你需要在不同平台有不同的配置,直接用条件编译即可
根据数组的第0项,决定登录方式的第一优先级。 根据数组的第0项,决定登录方式的第一优先级。
*/ */
// "login": ["username","smsCode","univerify", "weixin", "apple"], "login": ["weixin","username","univerify", "smsCode", "apple"]
"login": ["weixin","smsCode","univerify", "username", "apple"],
}, },
//关于应用 //关于应用
"about": { "about": {
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册