2025-05-15 16:23:50 +08:00

76 lines
1.9 KiB
PHP
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?php
namespace app\api\controller\openapi;
use app\common\controller\Api;
class Base extends Api
{
protected $noNeedLogin = '*';
protected $noNeedRight = '*';
protected $decrypt_data = [];
/**
* 初始化操作
* @access protected
*/
protected function _initialize()
{
parent::_initialize();
$this->checkToken();
}
public function checkToken()
{
// token
$key = $this->request->param('key/s',"");
$encryption_data = $this->request->param('encryption_data/s',"");
$sign = $this->request->param('sign/s',"");
if (!$encryption_data) {
$this->error('异常的调用');
}
//根据key查询公钥库
$public_key = \app\common\model\auth\api\Key::where('key', $key)->value("public_key");
if (!$public_key) {
$this->error('非法访问!');
}
$decrypted = '';
if (!openssl_public_decrypt(base64_decode($sign), $decrypted, $public_key)) {
$this->error('非法访问!');
}
$sign_data = json_decode($decrypted, true);
//取出时间戳
$timestamp = $sign_data['timestamp'];
//授权有效时间只有3分钟
if (time() - $timestamp > 180) {
$this->error('授权已过期');
}
//公钥解密加密数据
if($encryption_data){
$decrypt_data = '';
if (!openssl_public_decrypt(base64_decode($encryption_data), $decrypt_data, $public_key)) {
$this->error('非法访问!');
}
$this->decrypt_data = json_decode($decrypt_data, true);
//如果有当前服务器的token塞入当前服务重新加载父类_initialize方法
if(!empty($this->decrypt_data['token'])){
$token = $this->decrypt_data['token'];
$this->auth->init($token);
}
}
}
}