freedomsex/jwt-manager

此包已被废弃且不再维护。作者建议使用 a4sex/jwt-manager 包。

jwt-manager 用于 FreedomSex 项目

0.3.2 2022-01-02 15:14 UTC

README

适用于 FreedomSex 项目

为你提供,不保证版本兼容性,以及其他所有内容

在内部使用 Firebase\JWT

你需要创建用于签名令牌的密钥。

 mkdir -P /config/keys/ 
 cd config/keys 

密钥示例

 openssl genrsa -out private.key 1024
 openssl rsa -in private.key -pubout -outform PEM -out public.key

创建管理器实例时指定路径。并将 TimeToLive 生成的令牌作为最后一个参数

$manager = new JWTManager(
    '../keys/private.key',
    '../keys/public.key',
    $this->ttl
);

生成 JWT 令牌

简单的 JWT 令牌。仅过期在负载中

$token = $manager->create();

eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9.eyJleHAiOjE2Mzg1NDkwMTN9.GfefYgNnxpUCU_n8t0d37tQP-pjP7euGhrHTDx4T3ta0Eaa5Bedved5KbzZF-yXMUstnXr3TVRu3dkbKCaf0h2OJp13LT1WgvsyrkMIeO2KRG-vwsFrGrzAHRu2O5OKa7WI3sIFDE-oc_khyPFvO01UdiLtpEISOh8ys3Dh32-8

头部

{
  "typ": "JWT",
  "alg": "RS256"
}

负载

{
  "exp": 1638549013
}

https://jwt.node.org.cn

基于用户实例的负载

$token = $manager->create($user);
// getId - uid
// getRoles - roles
// getIdentityId - uuid
// getAccess - access
// getSubject -sub

弃用

uuid - 自 0.4 版本开始弃用:使用 uidid

$token = $manager->create($user);
// getId - id
// getUid - uid
// or
// getIdentityId - uid
// getId - id
// and
// getUid - uid (deprecated)
// and
// getIdentityId - uuid

"过期"的替代方法

$token = $manager->create($user, 1638549013); 

加载负载

$payload = $manager->load($token); // object return
$payload = (array) $manager->load($token); // array return
[
  "uid" => 1
  "exp" => 1638549013
]

继承和覆盖

覆盖 populatePayload 方法来自定义结构

public function populatePayload(array $payload, $user = null): array