src/AppBundle/Controller/Callback/CloudSearch/BaseProvider.php
(开头部分) 1KB这里只显示每个文件的开头 60 行。登录后可以解锁完整代码。
<?php
namespace AppBundle\Controller\Callback\CloudSearch;
use Biz\Common\CommonException;
use Symfony\Component\HttpFoundation\Request;
use Codeages\Biz\Framework\Context\BizAware;
abstract class BaseProvider extends BizAware
{
public function get(Request $request)
{
return array();
}
public function checkToken($token)
{
$this->decodeKeysign($token);
}
protected function decodeKeysign($token)
{
$token = explode(':', $token);
if (count($token) != 3) {
throw new \RuntimeException('API Token格式不正确!');
}
list($accessKey, $policy, $sign) = $token;
if (empty($accessKey) || empty($policy) || empty($sign)) {
throw new \RuntimeException('API Token不正确!');
}
$settings = $this->getSettingService()->get('storage', array());
if (empty($settings['cloud_access_key']) || empty($settings['cloud_secret_key'])) {
throw new \RuntimeException('系统尚未配置AccessKey/SecretKey');
}
if ($accessKey != $settings['cloud_access_key']) {
throw new \RuntimeException('AccessKey不正确!');
}
$expectedSign = $this->encodeBase64(hash_hmac('sha1', $policy, $settings['cloud_secret_key'], true));
if ($sign != $expectedSign) {
throw new \RuntimeException('API Token 签名不正确!');
}
$policy = json_decode($this->decodeBase64($policy), true);
if (empty($policy)) {
throw new \RuntimeException('API Token 解析失败!');
}
if (time() > $policy['deadline']) {
throw new \RuntimeException(sprintf('API Token 已过期!(%s)', date('Y-m-d H:i:s')));
}
24 小时内免费解锁 3 个项目,之后 1 算力/个。 规则说明
AI 解读 AI
登录后可用,每次 10 算力,解读结果公开显示在下面。
还没有人解读过这个文件。