如何使用手机app进行pc登录

提供一种通用的设计

后端只需提供3个接口,分别是 getUuid,isLogin,loginByQrcode

第一步

pc端切换到二维码扫码界面时,请求getUuid接口, getUuid接口生成一个uuid,存入到redis中,可设置过期时间

1
2
3
// 伪代码
$uuid = uniqid();
redis->set($uuid, 'login', 60 * 5)

第二步

PC前端一直轮询isLogin接口,isLogin接口判断uuid是否过期,判断是否uuid是否还未被二维码扫码,判断uuid的值是否已经跟token关联

1
2
3
4
5
6
7
8
9
10
11
12
13
14
// 伪代码
$uuid = input('uuid');
if (empty($uuid)) {
return '参数错误';
}
$token = redis->get($uuid);
if (empty($token)) {
return '二维码超时';
}
if ($token == 'login') {
return '手机还未扫码';
}

return $token

第三步

手机端已登录情况下扫码,获取到二维码的信息,即uuid,然后通过loginByQrcode接口,把token跟uuid信息关联到redis中

1
2
3
4
5
6
7
8
9
10
11
// 伪代码
$uuid = input('uuid');
$token = input('token');

$uuid = redis->has($uuid);
if (empty($uuid)) {
return '二维码过期,请刷新页面';
}
// 获取用户信息

redis->set($uuid, $token, 60 * 5)