登录代码示例
在打开小程序时,传登录code,后台通过code置换opneid判断该用户是否注册登录过,未注册不做任何操作,注册登录过将返回code=200,data:用户信息,将登录session保存在header头中,如下checkLogin方法中,以供后面接口购物车、订单等用户信息相关的接口使用,设置header头信息如下:
uni.request({
url: api.MemberCoupons,
method: 'GET',
header: {
cookie: uni.getStorageSync('sessionid')
},
...
})
common/ user.js:
/**
* 判断用户是否登录
*/
function checkLogin() {
return new Promise(function(resolve, reject) {
if (uni.getStorageSync('sessionid') && uni.getStorageSync('openid')) {
resolve(true);
} else {
uni.login({
provider: 'weixin',
success: function(loginRes) {
let code = loginRes.code;
uni.request({
url: api.LoginUrl,
method: 'POST',
//header: {'content-type': 'json'},
header: {'content-type': 'application/x-www-form-urlencoded'},
data: {
code: code
},
success: (res) => {
if(res.data.code==200){ //查到用户信息登录成功。步骤完成
uni.removeStorageSync('sessionid');//必须先清除,否则res.header['Set-Cookie']会报错
uni.setStorageSync("sessionid", res.header["Set-Cookie"]);
resolve(true);
}else{
reject(false);
}
}
});
},
});
}
});
}
module.exports = {
checkLogin
};
App.vue:
<script>
import user from './common/user.js'
export default {
globalData: {
statusBarHeight: uni.getSystemInfoSync()['statusBarHeight'],
hasLogin: false
},
onLaunch: function() {
user.checkLogin().then(res => {
this.globalData.hasLogin = true;
}).catch(() => {
this.globalData.hasLogin = false;
});
},
onShow: function() {
console.log('App Show')
},
onHide: function() {
console.log('App Hide')
}
}
</script>