jwt 令牌在 yii2 中解码时抛出异常

Posted

技术标签:

【中文标题】jwt 令牌在 yii2 中解码时抛出异常【英文标题】:jwt token is throwing exception while decoding in yii2 【发布时间】:2019-01-29 13:48:26 【问题描述】:

。我检查了令牌值,它变成了 承载eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOlwvXC9jbWMtc2VydmVyLmFwaSIsImF1ZCI6Imh0dHA6XC9cL2NtYy1zZXJ2ZXIuYXBpIiwiaWF0IjoxNTM1MDE1NzY3LCJuYmYiOjE1MzUwMTU3NjcsImp0aSI6NjIzLCJlbWFpbCI6InJvY2NvLmNhcHBhbGxhQGdtYWlsLmNvbSIsImRldmljZV9pZCI6ODUxfQ.5PDyFA_YtzKEvkFMhnmiwucVBf47IU3z9ejcmXUojIU P>

一旦我从令牌中删除了 Bearer,它就可以正常工作了。否则它会引发异常 “名称”:“例外”, "message": "未知 JSON 错误:5", “代码”:0, “类型”:“域异常”, "文件": "/Users/mds/Sites/cmc-server/vendor/firebase/php-jwt/src/JWT.php", “行”:336,

会有什么问题请告诉我。

【问题讨论】:

您应该使用某种方法检索令牌 【参考方案1】:

您可以使用以下方法,将您的完整令牌传递给它,它将返回您除了Bearer之外的令牌部分,然后解码该令牌

function getBearerToken() 
    $headers = $this->getAuthorizationHeader();
    // HEADER: Get the access token from the header
    if (!empty($headers)) 
        if (preg_match('/Bearer\s(\S+)/', $headers, $matches)) 
            return $matches[1];
        
    
    return null;

注意:您可能需要根据需要对其进行修改

【讨论】:

谢谢回复,但我很担心,为什么要在token Bearer的开头加上?这是标准格式吗? 它被添加到标题中以区分身份验证类型。在此处获取更多信息security.stackexchange.com/questions/108662/…

以上是关于jwt 令牌在 yii2 中解码时抛出异常的主要内容,如果未能解决你的问题,请参考以下文章

Java 异常 重写方法时抛出异常

搭建控制器时抛出的调用目标抛出异常

java写的excel导出时抛出的异常

当 string.length() 为 0 时抛出异常

在 oracle apex 中使用 sqlerm 和异常时抛出重复的错误代码

实体框架在使用 Find 方法时抛出异常