mathieu-bour/guardian

该包已被废弃且不再维护。未建议替代包。

为 Laravel 和 Lumen 的高可配置 JSON Web Token 实现。

0.1.0 2020-05-16 22:41 UTC

README

GitHub license Packagist Version Packagist GitHub issues GitHub pull requests Codecov Scrutinizer code quality

为 Laravel 和 Lumen 的高可配置 JSON Web Token 实现。

Guardian 提供了一个额外的身份验证 guardian 驱动,可以像标准 sessiontoken 驱动一样使用。

Guardian 遵循 语义化版本规范

在 1.0.0 版本发布之前,不应将 master 分支视为稳定。

动机

我们的公司基于 Lumen 框架构建后端,我们需要一种无状态的标识和认证方法。我们选择使用结合安全性和易用性的 JSON Web Tokens。虽然存在一些库,如 tymondesigns/jwt-authlaravel/passport,但它们不符合我们的要求。实际上,我们想要控制密钥的加密算法,并能够使用多个算法。

经过仔细考虑,我们决定开发自己的 JWT 库用于 Lumen,后来将其移植到 Laravel 并开源。

致谢

先决条件

  • PHP >= 7.2
  • Laravel/Lumen 6 或 7

安装

只需将 Guardian 添加到您的项目依赖项中。

composer require mathieu-bour/guardian

根据您想使用的 算法,安装相应的密码学库

算法 必需的 PHP 扩展
ECDSA web-token/jwt-signature-algorithm-ecdsa openssl
EdDSA web-token/jwt-signature-algorithm-eddsa sodium
HMAC web-token/jwt-signature-algorithm-hmac n/a
RSA web-token/jwt-signature-algorithm-rsa openssl, gmp

如果您不知道选择哪种算法,我们推荐使用 ECDSAES512 算法以及 P-521 曲线。

Laravel

发布默认 Guardian 配置

php artisan vendor:publish --provider="Windy\Guardian\GuardianServiceProvider"

Lumen

将默认 Guardian 配置从 vendor/mathieu-bour/guardian/config/guardian.php 复制到 config/guardian.php。然后,将提供者添加到您的 bootstrap/app.php 并使用以下命令加载配置:

$app->configure('guardian');

$app->register(Windy\Guardian\GuardianServiceProvider::class);

如果您想使用 Guardian 外观,请确保在您的 bootstrap/app.php 中已加载外观。

$app->withFacades();

下一步

  • 了解有关 JWT 的更多信息
  • 阅读 配置 参考
  • 阅读我们关于用户身份验证的 教程

替代方案

在此,我们谦逊地提到了一些我们认为有趣的 Guardian 替代方案。

laravel/passport

Passport 是官方的 Laravel 库,支持 JWT 身份验证。

使用 Laravel Passport,Laravel 可以轻松实现 API 身份验证,它为您的 Laravel 应用程序提供了完整的 OAuth2 服务器实现,只需几分钟即可完成。

tymondesigns/jwt-auth

jwt-auth 是 Guardian 的一个有价值的替代方案,它提供了一组高级 API,例如通过外观直接从请求凭证中验证用户。jwt-auth 还提供了一种将生成的令牌加入黑名单的方法,而 Guardian 则将实现留给开发者。如果您正在寻找一种更简单的方式来使用 JWT,我们强烈推荐您查看这个库!