我感觉这个书上的微信小程序登陆写得不好
基本功能是OK,但是感觉传的数据太多,不安全,需要改写。
App({
d: {
hostUrl: 'http://www.test.com/index.php', //请填写您自己的小程序主机URL
appId: "xxx",
appKey: "xxx",
ceshiUrl: 'http://www.test.com/index.php',//请填写您自己的测试URL
},
//小程序初始化完成时触发,全局只触发一次
onLaunch: function () {
//调用API从本地缓存中获取数据
var logs = wx.getStorageSync('logs') || []
logs.unshift(Date.now())
wx.setStorageSync('logs', logs);
//login
this.getUserInfo();
},
getUserInfo: function (cb) {
var that = this
if (this.globalData.userInfo) {
typeof cb == "function" && cb(that.globalData.userInfo)
} else {
wx.getSetting({
success: function (res) {
if (res.authSetting['scope.userInfo']) {
wx.login({
success: function (res) {
//console.log(res);
var code = res.code;
//get wx user simple info
wx.getUserInfo({
withCredentials: true,
success: function (res) {
//如果已经授权过那么会执行这里代码,console.log("已授权标记");
that.globalData.userInfo = res.userInfo;
typeof cb == "function" && cb(that.globalData.userInfo);
//get user sessionKey
that.getUserSessionKey(code);
if (that.userInfoReadyCallback) {
that.userInfoReadyCallback(res)
}
}
});
}
})
} else {
// 没有授权,重定向到 loading 启动页
wx.navigateTo({
url: '../tologin/tologin',
})
}
}
})
}
},
getUserSessionKey: function (code) {
//用户的订单状态
var that = this;
wx.request({
url: that.d.ceshiUrl + '/Api/Login/getsessionkey',
method: 'post',
data: {
code: code
},
header: {
'Content-Type': 'application/x-www-form-urlencoded'
},
success: function (res) {
//--init data
var data = res.data;
if (data.status == 0) {
wx.showToast({
title: data.err,
duration: 2000
});
return false;
}
that.globalData.userInfo['sessionId'] = data.session_key;
that.globalData.userInfo['openid'] = data.openid;
that.onLoginUser();
},
fail: function (e) {
wx.showToast({
title: '网络异常!err:getsessionkeys',
duration: 2000
});
},
});
},
//授权登录
onLoginUser: function () {
var that = this;
var user = that.globalData.userInfo;
wx.request({
url: that.d.ceshiUrl + '/Api/Login/authlogin',
method: 'post',
data: {
SessionId: user.sessionId,
gender: user.gender,
NickName: user.nickName,
HeadUrl: user.avatarUrl,
openid: user.openid
},
header: {
'Content-Type': 'application/x-www-form-urlencoded'
},
success: function (res) {
//--init data
var data = res.data.arr;
var status = res.data.status;
if (status != 1) {
wx.showToast({
title: res.data.err,
duration: 3000
});
return false;
}
that.globalData.userInfo['id'] = data.ID;
that.globalData.userInfo['NickName'] = data.NickName;
that.globalData.userInfo['HeadUrl'] = data.HeadUrl;
var userId = data.ID;
if (!userId) {
wx.showToast({
title: '登录失败!',
duration: 3000
});
return false;
}
that.d.userId = userId;
},
fail: function (e) {
wx.showToast({
title: '网络异常!err:authlogin',
duration: 2000
});
},
});
},
globalData: {
userInfo: null
},
onPullDownRefresh: function () {
wx.stopPullDownRefresh();
}
});
如果不想首页自动登陆,在其它页调用登陆:
// pages/user/user.js
var app = getApp()
Page({
data: {
userInfo: {},
orderInfo: {},
loadingText: '加载中...',
loadingHidden: false,
},
onLoad: function () {
var that = this
//调用应用实例的方法获取全局数据
app.getUserInfo(function (userInfo) {
//更新数据
that.setData({
userInfo: userInfo,
loadingHidden: true
})
});
console.log("个人中心:--" + app.d.userId);
this.loadOrderStatus();
},
})
我感觉这个书上的微信小程序登陆写得不好的更多相关文章
- nodejs+koa+uniapp实现微信小程序登陆获取用户手机号及openId
nodejs+koa+uniapp实现微信小程序登陆获取用户手机号及openId 前言: 我准备用nodejs+koa+uniapp实现一款餐饮点单小程序,以及nodejs+koa+vue实现后端管理 ...
- 补充ABP Zero集成微信小程序登陆的BUG修复部分
感谢园友 @turingguo 发布的 https://www.cnblogs.com/turingguo/p/9019026.html 文章,详细介绍了ABP Zero集成微信小程序登陆的实现过程 ...
- 02月刊(上) | 微信小程序
* { margin: 0; padding: 0 } .con { width: 802px; margin: 0 auto; text-align: center; position: inher ...
- 反编译获取线上任何微信小程序源码(转)
看到人家上线的小程序的效果,纯靠推测,部分效果在绞尽脑汁后能做出大致的实现,但是有些细节,费劲全力都没能做出来.很想一窥源码?查看究竟?看看大厂的前端大神们是如何规避了小程序的各种奇葩的坑?那么赶紧来 ...
- 微信小程序初探--写个扫雷分享给你玩
闲暇里,想学一下微信小程序, 于是,用微信小程序原生做了个扫雷玩. 以下略作总结,分享给大家. 微信里下拉,输入[mini计算器], 看到这个图标的就是了: 说好的扫雷,怎么变成计算器了?原因后面解释 ...
- 微信小程序登陆流程图时序图
微信小程序登录 小程序可以通过微信官方提供的登录能力方便地获取微信提供的用户身份标识,快速建立小程序内的用户体系. 微信小程序登录流程时序图 说明 调用 wx.login() 获取 临时登录凭证cod ...
- 微信小程序-登陆、支付、模板消息
wx.login(OBJECT) 调用接口获取登录凭证(code)进而换取用户登录态信息,包括用户的唯一标识(openid) 及本次登录的 会话密钥(session_key).用户数据的加解密通讯需要 ...
- mpvue微信小程序怎么写轮播图,和官方微信代码的差别
目前用mpvue很多第三方的ui库是引入不了的,因为它不支持含有dom操作. 那我们要做轮播图的话一个是手写另外一个就是用小程序的swiper组件了: 官方代码: <swiper indicat ...
- 微信小程序登陆授权
小程序前端代码 function WXlogin(){ wx.login({ success: function (code) { wx.getUserInfo({ success:function( ...
随机推荐
- 深入玩转K8S之利用Label控制Pod位置
首先介绍下什么是Label? Label是Kubernetes系列中一个核心概念.是一组绑定到K8s资源对象上的key/value对.同一个对象的labels属性的key必须唯一.label可以附加到 ...
- 解析Java反射java.lang.IllegalArgumentException: wrong number of arguments
项目中遇到的问题 import org.springframework.util.ReflectionUtils; import java.lang.reflect.Method; public cl ...
- [转帖]sql server版本特性简介、版本介绍简介
sql server版本特性简介.版本介绍简介 https://www.cnblogs.com/gered/p/10986240.html 目录 1.1.sql server的版本信息 1.2.版本重 ...
- Go基础编程实践(四)—— 数组和map
数组去重 package main import "fmt" func main(){ intSlice := []int{1,5,5,5,5,7,8,6,6, 6} fmt.Pr ...
- adminLTE2.4.18 bootstrap3 左侧菜单高亮
adminLTE2.4.18 bootstrap3 左侧菜单高亮 //菜单 $(function(){ console.log('eeeeeeeeee'); $('.sidebar-menu li ...
- jQuery格式化显示json数据
一.概述 JSONView 在gitlab上面,有一个jQuery JSONView插件,地址为:https://github.com/yesmeck/jquery-jsonview demo地址:h ...
- 用StatSVN统计svn项目中每人代码提交量
用StatSVN统计SVN服务器项目的代码量 下载并安装SVN统计工具StatSVN 1)下载地址:sourceforge.net/projects/statsvn/ 2)解压压缩包,到一个目录,如D ...
- SQL Injection (Blind)
Low级别基于布尔的盲注思路 1.判断是否存在注入,注入是字符型还是数字型 2.猜解当前数据库名 3.猜解数据库中的表名 4.猜解表中的字段名 5.猜解数据 判断是否有sql注入 输入1.1’ and ...
- 【开发工具】- Idea.2018.02注册码激活
1.从下面地址下载一个jar包,名称是 JetbrainsCrack-3.1-release-enc.jar 下载地址: 链接: https://pan.baidu.com/s/1VZjklI3qh ...
- python day 21: HTML的基本元素及CSS
目录 python day 21 1. HTML 1.1 常见的HTML元素 python day 21 2019/11/02 学习资料来自老男孩与尚学堂 1. HTML 1.1 常见的HTML元素 ...