gpt4 book ai didi

laravel - 如何在 Laravel 5.7 中生成 JWT 刷新 token

转载 作者:行者123 更新时间:2023-12-04 15:50:39 28 4
gpt4 key购买 nike

首先,让我承认我是 API 的新手,现在我正在使用 Laravel 开发 JWT。我正在使用 tymon\jwt-auth (具体来说是 tymon/jwt-auth:dev-develop --prefer-source)。我浏览了一些教程,并且能够生成 JWT 访问 token 。

这是我的登录代码:

public function login() {
$credentials = request(['email', 'password']);
if (!$token = auth('api')->attempt($credentials)) {
return response()->json(['error' => 'Unauthorized'], 401);
}
return response()->json([
'status' => 'success',
'message' => 'Login successful',
'data' => [
'access_token' => $token,
],
]);
}

我还需要获取刷新 token 和访问 token ,但找不到适用于我的情况的代码。

我尝试在代码中添加这些行:
$refresh_token = JWTAuth::refresh($token);

但 postman 返回此错误:

A token is required in file /var/www/brochill-api/vendor/tymon/jwt-auth/src/JWT.php on line 331



如果需要,我还可以提供我使用的其他配置片段。请帮忙!

最佳答案

让我们从创建 /refresh 开始路线:

Route::post('refresh', 'AuthController@refresh');

现在,在 AuthController ,
<?php

namespace App\Http\Controllers;

use Illuminate\Support\Facades\Auth;
use App\Http\Controllers\Controller;

class AuthController extends Controller
{
/**
* Create a new AuthController instance.
*
* @return void
*/
public function __construct()
{
$this->middleware('auth:api', ['except' => ['login']]);
}

/**
* Get a JWT via given credentials.
*
* @return \Illuminate\Http\JsonResponse
*/
public function login()
{
//
}

/**
* Get the authenticated User.
*
* @return \Illuminate\Http\JsonResponse
*/
public function me()
{
//
}

/**
* Log the user out (Invalidate the token).
*
* @return \Illuminate\Http\JsonResponse
*/
public function logout()
{
//
}

/**
* Refresh a token.
*
* @return \Illuminate\Http\JsonResponse
*/
public function refresh()
{
return $this->respondWithToken(auth()->refresh());
}

/**
* Get the token array structure.
*
* @param string $token
*
* @return \Illuminate\Http\JsonResponse
*/
protected function respondWithToken($token)
{
return response()->json([
'access_token' => $token,
'token_type' => 'bearer',
'expires_in' => auth()->factory()->getTTL() * 60
]);
}
}
refresh()函数刷新访问 token 并使当前的无效。

有关这些的更多信息,您可以查看 tymon/jwt-auth 的官方文档。 ,可以找到 here .

关于laravel - 如何在 Laravel 5.7 中生成 JWT 刷新 token ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53946159/

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