我正在尝试创建具有添加的自定义声明的JWT令牌,不使用 auth(这意味着我不希望从凭据中创建令牌。)这是为了创建令牌,不需要登录,例如忘记密码/重置密码等。
class OTL extends Model implements JWTSubject
use JWTAuth;
use Tymon\JWTAuth\Contracts\JWTSubject;
use Tymon\JWTAuth\Facades\JWTFactory;
public static function getJwtToken($customerId, $action, $token){
$customClaims = ['action' => $action, 'customer-id' => $customerId, 'token' => $token];
$factory = JWTFactory::customClaims($customClaims);
$payload = $factory->make();
$token = JWTAuth::encode($payload);
return $token;
我收到一个错误:JWT payload does not contain the required claims
。
我希望收到保存上面有效载荷的令牌。
答案 0 :(得分:0)
我刚刚遇到了相同的错误,并且能够通过更新生成的配置文件config/jwt.php
中的必需声明列表来解决该问题。
...
'required_claims' => [
'exp',
'sub',
...
],
...
还要确保您已运行php artisan jwt:secret
或提供了用于签名的秘密密钥。
答案 1 :(得分:0)
我通过在'exp'
的{{1}}中注释了required_claims
来解决了这个问题:
config/jwt.php