1
0
mirror of https://gitee.com/ledc/IYUUAutoReseed synced 2025-04-27 12:53:24 +00:00

优化合作站点登录逻辑,设置登录缓存,减少请求。

This commit is contained in:
iyuu.cn 2020-03-14 17:19:39 +08:00
parent 77443896dd
commit f5bc84e23d

@ -18,25 +18,8 @@ class Oauth
public static $passkey = ''; public static $passkey = '';
// 合作站名字 // 合作站名字
public static $site = ''; public static $site = '';
/** // 登录缓存路径
* 初始化配置 public static $SiteLoginCache = ROOT_PATH.DS.'config'.DS.'siteLoginCache_{}.json';
*/
public static function init()
{
global $configALL;
foreach (self::$sites as $name) {
if (isset($configALL[$name]['passkey']) && $configALL[$name]['passkey'] && isset($configALL[$name]['id']) && $configALL[$name]['id']) {
self::$token = self::getSign();
self::$user_id = $configALL[$name]['id'];
self::$passkey = sha1($configALL[$name]['passkey']); // 避免泄露用户passkey秘钥
self::$site = $name;
return true;
}
}
echo "-----缺少合作站点登录参数token, user_id, passkey, site \n";
echo "-----当前正在使用测试接口,功能可能会受到限制! \n\n";
return false;
}
/** /**
* 从配置文件内读取爱语飞飞token作为鉴权参数 * 从配置文件内读取爱语飞飞token作为鉴权参数
*/ */
@ -57,10 +40,24 @@ class Oauth
* 作用在服务器端实现微信用户与合作站点用户id的关联 * 作用在服务器端实现微信用户与合作站点用户id的关联
* 参数爱语飞飞token + 合作站点用户id + sha1(合作站点密钥passkey) + 合作站点标识 * 参数爱语飞飞token + 合作站点用户id + sha1(合作站点密钥passkey) + 合作站点标识
*/ */
public static function login($apiUrl = '') public static function login($apiUrl = '', $sites = array())
{ {
$is_oauth = self::init(); global $configALL;
if ($is_oauth) { // 云端下发合作的站点标识
self::$sites = $sites ? $sites : self::$sites;
$ret = false;
self::$token = self::getSign();
foreach (self::$sites as $name) {
if (is_file(str_replace('{}', $name, self::$SiteLoginCache))){
// 存在鉴权缓存
$ret = true;
continue;
}
if (isset($configALL[$name]['passkey']) && $configALL[$name]['passkey'] && isset($configALL[$name]['id']) && $configALL[$name]['id']) {
self::$user_id = $configALL[$name]['id'];
self::$passkey = sha1($configALL[$name]['passkey']); // 避免泄露用户passkey秘钥
self::$site = $name;
$curl = new Curl(); $curl = new Curl();
$curl->setOpt(CURLOPT_SSL_VERIFYPEER, false); $curl->setOpt(CURLOPT_SSL_VERIFYPEER, false);
$data = [ $data = [
@ -71,8 +68,32 @@ class Oauth
]; ];
$res = $curl->get($apiUrl, $data); $res = $curl->get($apiUrl, $data);
p($res->response); p($res->response);
return true;
$rs = json_decode($res->response,true);
if (isset($rs['ret']) && $rs['ret'] == 200 && isset($rs['data']['success']) && $rs['data']['success']){
self::setSiteLoginCache($name, $rs);
$ret = true;
}else{
$msg = isset($rs['msg']) && $rs['msg'] ? $rs['msg'] : '远端服务器无响应,请稍后重试!';
$msg = isset($rs['data']['errmsg']) && $rs['data']['errmsg'] ? $rs['data']['errmsg'] : $msg;
echo $msg . PHP_EOL;
} }
return false; } else {
echo $name.'合作站点参数配置不完整请同时填写passkey和用户id。' . PHP_EOL;
echo '合作站点鉴权配置请查阅https://www.iyuu.cn/archives/337/'. PHP_EOL. PHP_EOL;
}
}
return $ret;
}
/**
* 写鉴权成功配置
*/
private static function setSiteLoginCache($key = '', $array = [])
{
$json = json_encode($array, JSON_UNESCAPED_UNICODE);
$myfile = str_replace('{}', $key, self::$SiteLoginCache);
$file_pointer = @fopen($myfile, "w");
$worldsnum = @fwrite($file_pointer, $json);
@fclose($file_pointer);
} }
} }