1:原理如下
点击扫码登录,后端生成一个随机数和该随机数生成的二维码;app扫码后得到这个随机数,把这个随机数和用户id请求都后端,后端把这个随机数和用户id保存到一张临时数据表;pc端jq轮询携带随机数请求后端这个数据表,如果发现则登录。
2:部分代码
//循环请求数据
for (var i = 0; i < 30; i++) {
(function (j) {
setTimeout(function() {
console.log(j);
$.ajax({
type:"get",
url:"/store/getResCode",
data:{
'login_code':data.data.re_val,
_token:'{{ csrf_token() }}'
},
dataType:"json",
success:function(data){
if(data){
window.location.href="/store";
return false;
}
}
});
}, 2000 * j);
})(i);
}
图片Base64
/**
* 登录二维码
* @return array
*/
public function phpQrCodes()
{
include app_path().'/Lib/phpqrcode.php';
$errorCorrectionLevel = 'L';//容错级别
$matrixPointSize = 10;//生成图片大小
//二维码
$PaymentPayFlow=new PaymentPayFlow;
//创建唯一token值
$order_id=$this->genId();
$re_val=$PaymentPayFlow->generatePayFlowNumber($order_id, 'qrlogin', 'phpQrCodes', time());
$ewm = QRcode::pngToBase64($re_val,false,$errorCorrectionLevel,$matrixPointSize,0);
$info = [
're_val' => $re_val,
'ewm' => $ewm,
];
return $this->format('1', "请求成功", $info);
}