Javascript PHP端的JWT

Javascript PHP端的JWT,javascript,php,angularjs,Javascript,Php,Angularjs,我正在从事一个AngularJS/Phonegap/PHP(Zend)项目 我希望用户通过JWT登录。(这似乎是最好的选择,因为cookies不起作用)。我找到了一个从角度管理它的方法 我在谷歌上搜索了很多次,发现谷歌使用的是这个版本。我还发现了一个基于firebase()的更新版本 (1)我应该使用哪一个 我现在正在使用Luciency,当我通过以下方式创建令牌时: $ENV_var = "whatever": $token = encode("id: 5", $ENV_var); 它返回:

我正在从事一个AngularJS/Phonegap/PHP(Zend)项目

我希望用户通过JWT登录。(这似乎是最好的选择,因为cookies不起作用)。我找到了一个从角度管理它的方法

我在谷歌上搜索了很多次,发现谷歌使用的是这个版本。我还发现了一个基于firebase()的更新版本

1)我应该使用哪一个

我现在正在使用Luciency,当我通过以下方式创建令牌时:

$ENV_var = "whatever":
$token = encode("id: 5", $ENV_var);
它返回:
eyj0exaiioijkv1qilcjhbgcioijiuzi1nij9.ImlkOiA1Ig.KtG-rolezwidhbmnali1vioczypyum2az1kfieygj7e0
,该值未验证,但如果使用相同的脚本对其进行解码,则有效

2)这是为什么?这是因为
jwt.io
是由
Auth0
生成的吗

3)我也不知道什么时候/为什么我应该使用“符号方法”而不是编码(下面:来自github)

1) 我建议使用firebase实现,因为它维护得更多,并且具有编写器支持

传递到
encode
方法中的有效负载应该是一个“声明”数组,参见例如

2) 因为您生成的令牌不是基于数组或包含任何必需的声明


3) 您通常应该使用编码/解码方法,因为它们将在内部调用sign。两者都很好用,但是第二个有更好的文档。我个人更喜欢和你一起工作

你说生成的JWT是无效的。我已经测试了它,它工作正常(它被正确解码),只要确保使用正确的算法“HS256”和你的秘密

公元2年。这个问题不清楚,你能澄清一下吗

公元3年。该类的Encode方法调用sign。你不必自己打电话,只要编码就行了

  public static function sign($msg, $key, $method = 'HS256')
    {
        $methods = array(
            'HS256' => 'sha256',
            'HS384' => 'sha384',
            'HS512' => 'sha512',
        );
        if (empty($methods[$method])) {
            throw new DomainException('Algorithm not supported');
        }
        return hash_hmac($methods[$method], $msg, $key, true);
    }
$payload = array('sub' => 1, 'iss' => 'example.com');
$secret = 'someSecretKey';

$token = JWT::encode($payload, $secret);