首页 文章

使用slim-jwt-auth生成令牌

提问于
浏览
3

我正在使用slim-jwt-auth为JSON API创建基于令牌的身份验证 .

文档非常有用,但我不明白的一件事是如何生成令牌?文档说中间件能够解码令牌,但看不到任何编码方式 .

我见过的一些项目使用firebase/jwt,但我不确定这是否需要,或与 slim-jwt-auth 兼容 .

slim-jwt-auth能够生成令牌吗?

2 回答

  • 0

    您可以但不需要安装额外的库来生成令牌 . 中间件在内部使用firebase/php-jwt,因此您可以使用相同的库来生成令牌 . 像下面这样的东西 .

    use \Firebase\JWT\JWT;
    use \Tuupola\Base62;
    
    $now = new DateTime();
    $future = new DateTime("now +2 hours");
    $jti = Base62::encode(random_bytes(16));
    
    $secret = "your_secret_key";
    
    $payload = [
        "jti" => $jti,
        "iat" => $now->getTimeStamp(),
        "nbf" => $future->getTimeStamp()
    ];
    
    $token = JWT::encode($payload, $secret, "HS256");
    

    您也可以查看Slim API Skeleton获取灵感 .

  • 5

    根据slim-jwt-auth登陆页面上的免责声明,中间件只处理令牌;没有提供任何生成它们的方法 .

    抬头!中间件不实现OAuth 2.0授权服务器,也不提供生成,发布或存储身份验证令牌的方法 . 它仅在通过标头或cookie传递时解析和验证令牌 .

    (重点是我的)

    您确实可以使用另一个库来生成JWT令牌,然后由 slim-jwt-auth 使用它们 . 只要两个库都正确地实现了规范,至少如果您只使用强制实现规范的各个部分,则应该没有互操作性问题 .


    您可以检查jwt.io以获取用于JWT处理的PHP库列表,但 firebase/jwt 将是一个很好的起点 . 如果您不是自己生成令牌,而是考虑将令牌的身份验证和签发完全委托给第三方,那么我建议您查看Auth0 .

    披露:我在Auth0工作 .

相关问题