flipboxfactory / craft-jwt

该包的最新版本(1.1.0)没有提供许可证信息。

JWT 授权

安装: 9,009

依赖项: 0

建议者: 0

安全: 0

星标: 11

关注者: 4

分支: 2

公开问题: 1

类型:craft-plugin

1.1.0 2022-02-14 19:34 UTC

README

Join the chat at https://gitter.im/flipboxfactory/craft-jwt Latest Version Software License Build Status Coverage Status Quality Score Total Downloads

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 身份令牌的绝佳候选。流程大致如下

  1. 设置一个 JavaScript 变量: let jwt = '{{ craft.jwt.identity.issue(currentUser) }}'
  2. 使用 Axois(或其他 HTTP 客户端库),使用步骤 1 中创建的 JWT 令牌调用您的 API。
  3. 将身份验证过滤器应用到您的 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)。请参阅许可文件获取更多信息。