cari

Rumah  >  Soal Jawab  >  teks badan

Muat semula token menggunakan perpustakaan "PHP-Open-Source-Saver/jwt-auth" dalam Laravel 9

Saya sedang membuat API dalam Laravel dan saya mahu mencipta rutin token muat semula.

Saya menggunakan contoh dari laman web

<?php

namespace AppHttpControllers;

use IlluminateSupportFacadesAuth;
use AppHttpControllersController;

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 IlluminateHttpJsonResponse
     */
    public function login()
    {
        $credentials = request(['email', 'password']);

        if (! $token = auth()->attempt($credentials)) {
            return response()->json(['error' => 'Unauthorized'], 401);
        }

        return $this->respondWithToken($token);
    }

    /**
     * Get the authenticated User.
     *
     * @return IlluminateHttpJsonResponse
     */
    public function me()
    {
        return response()->json(auth()->user());
    }

    /**
     * Log the user out (Invalidate the token).
     *
     * @return IlluminateHttpJsonResponse
     */
    public function logout()
    {
        auth()->logout();

        return response()->json(['message' => 'Successfully logged out']);
    }

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

    /**
     * Get the token array structure.
     *
     * @param  string $token
     *
     * @return IlluminateHttpJsonResponse
     */
    protected function respondWithToken($token)
    {
        return response()->json([
            'access_token' => $token,
            'token_type' => 'bearer',
            'expires_in' => auth()->factory()->getTTL() * 60
        ]);
    }
}

Tetapi ia menunjukkan ralat ini "Kaedah tidak ditentukan 'kilang'.intelephense(1013)" "Kaedah yang tidak ditentukan 'refresh'.intelephense(1013)"

Bagaimana untuk melaksanakan rutin token penyegaran ini? Dan mengapa ralat ini berlaku? Dalam versi lama, apabila perpustakaan JWT masih tymondesigns/jwt-auth, ralat ini tidak berlaku.

Laravel 9 PHP 8.1

P粉637866931P粉637866931397 hari yang lalu657

membalas semua(1)saya akan balas

  • P粉838563523

    P粉8385635232023-12-24 10:43:32

    Anda boleh memuat semula token menggunakan arahan berikut

    $token = JWTAuth::getToken();
    $new_token = JWTAuth::refresh($token);

    Walau bagaimanapun, jika anda mahu token dimuat semula pada setiap permintaan (tidak digalakkan), tambah perisian tengah jwt.refresh dalam appHttpKernel.php anda

    protected $routeMiddleware = [
        ...
        'jwt.auth' => 'Tymon\JWTAuth\Middleware\GetUserFromToken',
        'jwt.refresh' => 'Tymon\JWTAuth\Middleware\RefreshToken',
    ];

    balas
    0
  • Batalbalas