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 算力,解读结果公开显示在下面。

还没有人解读过这个文件。