// 登录
wx.login({
success: res => {
// 发送 res.code 到后台换取 openId, sessionKey, unionId
console.log(res.code);
wx.request({
url: this.globalData.url.session,
data:{
code:res.code
},
success:res=>{
console.log(res);
console.log(res.header['Set-Cookie']);
wx.setStorage({
key: 'session_id',
data: res.header["Set-Cookie"],
})
}
})
}
})
2.获取用户的信息,若已经授权,可以直接调用 getUserInfo 获取头像昵称,不会弹框,可以将 res 发送给后台解码出 unionId
由于 getUserInfo 是网络请求,可能会在 Page.onLoad 之后才返回,所以此处加入 callback 以防止这种情况,代码如下:
// 获取用户信息
wx.getSetting({
success: res => {
if (res.authSetting['scope.userInfo']) {
// 已经授权,可以直接调用 getUserInfo 获取头像昵称,不会弹框
wx.getUserInfo({
success: res => {
// 可以将 res 发送给后台解码出 unionId
this.globalData.userInfo = res.userInfo
// 由于 getUserInfo 是网络请求,可能会在 Page.onLoad 之后才返回
// 所以此处加入 callback 以防止这种情况
if (this.userInfoReadyCallback) {
this.userInfoReadyCallback(res)
}
}
})
}
}
})
},
3.在学生列表的js文件中写入以下代码或得访问权限 代码如下:
header: {
Cookie: wx.getStorageSync('session_id')
},
4.在一个新的控制器中写入身份验证的方法 代码如下:
//身份验证
public function checksession($code){
// echo $code;
// exit;
// if(empty($code)) return false;
$appid = "wx79905acc254e34a7";
$secret = "d4e7fd6a7469d56eee30190245d8d3a1";
$url = "https://api.weixin.qq.com/sns/jscode2session?appid={$appid}&secret={$secret}&js_code={$code}&grant_type=authorization_code";
$ret = https_get($url);
// echo $ret;
// exit;
$arr = json_decode($ret,true);
if(isset($arr['openid']) && isset($arr['session_key'])){
session('openid',$arr['openid']);
session('session_key',$arr['session_key']);
// $session_id = session_id();
// session($session_id,$arr['openid'] . $arr['session_key']);
// echo $session_id;
}else{
die($ret);
}
}
5.在php文件中写入身份验证和阻止非法访问用户 代码如下:
public function _initialize(){
if(!session('?openid')||!session('?session_key')){
die('非法用户访问');
}
}
代码完成。