1 Star 1 Fork 0

ezy / api-token

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
README.md 2.28 KB
一键复制 编辑 原始数据 按行查看 历史
ezy 提交于 2020-10-15 15:36 . init

APIToken Latest Version

单易用的身份认证组件。

  • 签发令牌,登录验证通过后签发令牌,通过响应头 x-token 返回给客户端
  • 发送令牌,支持多种方式
    • 请求头 Authorization:Bearer
    • 请求头,Cookie参数 x-token
    • 查询参数,POST参数 token
  • 自动续期
    • 令牌保鲜时间,时间短(比如2小时)
      使用不新鲜的令牌时,服务端会通过响应头 x-token 下发新的令牌给客户端。
      此时旧令牌仍保持可用60秒,之后使用旧令牌将返回401。
    • 令牌失效时间,时间长(比如7天)
      使用失效令牌时,服务端返回 401,这时候客户端需要重新登陆
  • 撤消令牌,用户退出登录 或 手动踢人下线
  • 多实例,可以同时存在多个实例
  • 多端互踢,每个实例每个用户最多一个新鲜令牌
  • 令牌格式,令牌解析后可得到 客户端ID, 用户ID签发时间签名
  • 令牌签名,通过 客户端ID, 用户ID签发时间设备信息 生成,防止伪造篡改令牌

安装依赖

composer require reezy/api-token

使用

登录验证通过后签发令牌

$manager = $container->get(APITokenManager::class);
// 为指定用户签发一个令牌
$token = $manager->get('app')->issue($request, $userId);

return $response->withHeader($manager->getHeaderTokenKey(), $token);

用户退出登录时撤消令牌

// 获取当前请求中使用的实例
APIToken::get($request)->revoke($userId);
  • 需要在控制器或请求上加上中间件 APITokenMiddleware
  • 提供了事件 APITokenChecked,每次令牌验证通过时触发

配置

<?php
return [
    'app' => [ 
        'secret_key' => 'SECRET_KEY',
        'freshTime' => 7200,
        'ttl' => 86400, 
    ],
    'admin' => [ 
        'secret_key' => 'SECRET_KEY',
        'freshTime' => 7200,
        'ttl' => 86400,
    ],

    'header_token_key' => 'x-token',
    'params_token_key' => 'token',
];

LICENSE

The Component is open-sourced software licensed under the Apache license.

PHP
1
https://gitee.com/ezy/api-token.git
git@gitee.com:ezy/api-token.git
ezy
api-token
api-token
master

搜索帮助