src/AppBundle/Common/JWTAuth.php
(开头部分) 1KB这里只显示每个文件的开头 60 行。登录后可以解锁完整代码。
<?php
namespace AppBundle\Common;
class JWTAuth
{
const ALG = 'sha1';
const TYP = 'JWT';
protected $token;
public function __construct($key)
{
$this->token = $key;
}
/**
* @param $payload
* @param array $options
*
* @return string
*/
public function auth($payload, $options = array())
{
if (isset($options['exp']) && isset($options['iat'])) {
$payload['exp'] = $options['exp'];
$payload['iat'] = $options['iat'];
}
$payload = $this->makePayload($payload);
$header = $this->makeHeader();
$token = $this->token;
$jwtContent = self::urlSafeBase64Encode(json_encode($header)).'.'.self::urlSafeBase64Encode(json_encode($payload));
return $jwtContent.'.'.self::signature($jwtContent, $token, $header['alg']);
}
public function valid($jwt)
{
$jwtArray = explode('.', $jwt);
$token = $this->token;
if (3 != count($jwtArray)) {
return false;
}
list($header64, $payload64, $sign) = $jwtArray;
$header = json_decode(self::urlSafeBase64Decode($header64), JSON_OBJECT_AS_ARRAY);
if (empty($header['alg'])) {
return false;
}
$expectSign = self::signature($header64.'.'.$payload64, $token, $header['alg']);
if ($expectSign != $sign) {
return false;
}
24 小时内免费解锁 3 个项目,之后 1 算力/个。 规则说明
AI 解读 AI
登录后可用,每次 10 算力,解读结果公开显示在下面。
还没有人解读过这个文件。