Muat semula token menggunakan perpustakaan "PHP-Open-Source-Saver/jwt-auth" dalam Laravel 9
P粉637866931
P粉637866931 2023-12-23 15:50:34
0
1
514

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粉637866931
P粉637866931

membalas semua(1)
P粉838563523

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',
];
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!