gpt4 book ai didi

php - 使用 Laravel JWT 自定义负载

转载 作者:可可西里 更新时间:2023-11-01 13:17:19 25 4
gpt4 key购买 nike

我正在使用 Laravel 5.3 和 laravel jwt对于 token ,这里是 Controller 使用的命名空间列表。

use JWTAuth;
use App\Http\Requests;
use Illuminate\Http\Request;
use Tymon\JWTAuth\Facades\JWTFactory;
use Tymon\JWTAuth\Exceptions\JWTException;

我需要添加自定义负载数据来生成 token 。

以下是我尝试使用自定义负载生成 token 的方式。

        $payloadable = [
'id' => $tokenPayload->id,
'name' => $tokenPayload->name,
'email' => $tokenPayload->email,
'deleted_at' => $tokenPayload->deleted_at,
'created_at' => $tokenPayload->created_at,
'updated_at' => $tokenPayload->updated_at,
'organization' => $request->organization_id
];

// Generate the token.
$token = JWTAuth::encode( JWTFactory::make( $payloadable ) );

// Return token.
return response()->json( [ 'token' => $token ] );

但是在响应中 token 是空的!这是回应

{
"token": {}
}

为什么它返回一个空 token 而不是 jwt token !

更新:

现在我可以使用 JWTFactory 命名空间之前的 \ 获取 token ,但是我如何才能获取更新后的 token 值?

我想要实现的是向现有 token 添加一些额外的字段,在阅读 Laravel JWT-auth 文档后,我发现我需要创建另一个 token ,它会有额外的字段,但新 token 不是返回附加字段。

最佳答案

尝试下面的代码对我有用。

//load user place your code for load user
$user = User::find( $user_id );
// if you don't have user id then also you can used.
$user = User::where( 'email', $tokenPayload->email )->first();

$payloadable = [
'id' => $tokenPayload->id,
'name' => $tokenPayload->name,
'email' => $tokenPayload->email,
'deleted_at' => $tokenPayload->deleted_at,
'created_at' => $tokenPayload->created_at,
'updated_at' => $tokenPayload->updated_at,
'organization' => $request->organization_id
];

$token = JWTAuth::fromUser($user,$payloadable);

您可以使用以下代码获取组织。

$payload = JWTAuth::parseToken()->getPayload();
// then either of
$payload->get('organization');

您可以使用 fromUser 方法通过传递用户对象来获取新 token 。

试试这段代码,希望这段代码对你有用。

You can get more detail from here .

关于php - 使用 Laravel JWT 自定义负载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40435842/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com