flipboxfactory / craft-jwt
JWT 授权
Requires
- craftcms/cms: ^3.0
- lcobucci/jwt: ^3.0
Requires (Dev)
- phpunit/phpunit: ^5.0
- squizlabs/php_codesniffer: ^3.4
This package is auto-updated.
Last update: 2024-09-15 01:04:47 UTC
README
Craft CMS 的 JWT(JSON Web Token)插件帮助发行和声明令牌。目的是发行一个令牌,将来可以在某个时间点被声明并用于执行各种操作。
JWT 的生命周期在创建时定义
用例
- 受保护的下载
- 受保护的页面/内容
- 授权 API
- 跟踪操作(用户操作)
- 与访客共享下载/页面
要了解更多关于 JWT 的信息,请访问 JWT.IO
要求
此插件需要 Craft CMS 3.0 或更高版本。
安装
只需从您的项目根目录运行以下命令
composer require flipboxfactory/craft-jwt
将插件包含到您的项目中后,导航到控制面板,转到设置 → 插件,并点击 JWT 插件 的“安装”按钮。
模板化
craft.jwt
模板变量提供对整个 JWT 插件的访问。要访问服务,您可以使用
身份服务
{% set token = craft.jwt.identity.issue(currentUser) %} {# To generate a token (store the identity) #} {% set claim = craft.jwt.identity.claim(token|trim) %} {# To claim a token (retrieve the identity) #}
路由服务
{% set token = craft.jwt.route.issue('action/path') %} {# To generate a token (store the action path) #} {% set claim = craft.jwt.route.claim(token|trim) %} {# To claim a token (retrieve the action path) #}
示例
此插件的一些常见用法如下
自消耗 API(混合 API - 调用您的 API)
调用您的 API 是 JWT 身份令牌的绝佳候选。流程大致如下
- 设置一个 JavaScript 变量:
let jwt = '{{ craft.jwt.identity.issue(currentUser) }}'
- 使用 Axois(或其他 HTTP 客户端库),使用步骤 1 中创建的 JWT 令牌调用您的 API。
- 将身份验证过滤器应用到您的 API 控制器。
/** * @inheritdoc */ public function behaviors() { return \craft\helpers\ArrayHelper::merge( parent::behaviors(), [ 'authenticator' => [ 'authMethods' => [ \flipbox\craft\jwt\filters\JwtHttpBearerAuth::class ] ] ] ); }
可以在我们 Craft CMS 的 RESTful API 中找到身份验证过滤器实现的完整示例。
受保护的下载(或页面访问)
可能用户需要访问受保护的页面或文件下载。为了避免公开暴露 URL,发行 JWT 路由令牌。
渲染模板
{% set token = craft.jwt.route.issue(['templates/render', {'template': '_protected/template'}], currentUser) {# the link will automatically render the template #} <a href="{{ actionUrl("jwt/route", {jwt: token|trim}) }}">View Protected Page</a>
文件下载
{% set asset = craft.assets.one() %} {% set token = craft.jwt.route.issue(['assets/thumb', {'uid': asset.uid, width: 100, height: 100}], currentUser) %} <a href="{{ actionUrl("jwt/route", {jwt: token|trim}) }}">Download Protected File</a>
注意:请注意,在文件下载示例中,我们在生成令牌时还传递了 currentUser
参数。因此,当处理操作时,我们假设在执行操作之前发行令牌的用户身份。这意味着用户不需要登录到 Craft。
注意
此插件创建的 JWT 技术上属于 JWS(JSON Web Signature)令牌。令牌的内容可以很容易地解码和查看,例如使用 jwt.io 等工具。请务必不要在令牌中存储敏感数据。Craft 的 '安全密钥' 用于签名每个令牌,确保内容未被篡改。
令牌有效期为
贡献
请参阅 CONTRIBUTING 以获取详细信息。
鸣谢
许可证
MIT许可(MIT)。请参阅许可文件获取更多信息。