Rumah  >  Soal Jawab  >  teks badan

Kemas kini token tymon/jwt-auth dalam API Laravel

<p>Saya mempunyai API Laravel dan saya telah memasang <code>tymon/jwt-auth</code>. Untuk log masuk pengguna dan mendapatkan token saya menggunakan kod berikut: </p> <pre class="brush:php;toolbar:false;">if (! $token = auth()->attempt($request->only('email', 'password'), true)) { buang Pengecualian Pengesahan::denganMesej([ 'email' => 'Kelayakan Tidak Sah', ]); } kembalikan Sumber Token baharu([ 'token' => $token, 'pengguna' => $pengguna, ]); </pra> <p>Saya juga mempunyai titik akhir untuk <code>token muat semula</code> yang sepatutnya membatalkan token lama dan mengeluarkan yang baharu. Menurut dokumentasi, saya menambah kod berikut: </p> <pre class="brush:php;toolbar:false;">kembali TokenResource baharu([ 'token' => auth()->refresh(), 'pengguna' => auth()->user(), ]); </pra> <p>Masalahnya ialah apabila saya mengakses titik akhir dengan token semasa, ia mengembalikan token baharu, tetapi token lama masih sah. </p> <p>Adakah terdapat cara untuk membatalkan token muat semula? </p>
P粉798010441P粉798010441402 hari yang lalu504

membalas semua(2)saya akan balas

  • P粉557957970

    P粉5579579702023-08-15 11:18:45

    Ini ialah tingkah laku lalai. Jadi untuk mencapai hasil yang anda inginkan, anda boleh menyenaraihitamkannya. Apabila pengguna cuba menggunakan token, anda boleh menyemak sama ada ia berada dalam senarai hitam. Jika ya, anda boleh menolaknya.

    Anda boleh mencapai ini dengan mencipta perisian tengah yang menyemak sama ada token berada dalam senarai hitam dan menggunakan perisian tengah itu pada laluan yang memerlukan pengesahan token.

    Perisian tengah:

    public function handle($request, Closure $next)
    {
        $token = $request->bearerToken();
        
        if (TokenBlacklist::where('token', $token)->exists()) {
            return response()->json(['message' => '令牌已失效'], 401);
        }
    
        return $next($request);
    }

    Walau bagaimanapun, anda hanya perlu melakukan ini jika sistem anda benar-benar memerlukannya.

    balas
    0
  • P粉768045522

    P粉7680455222023-08-15 00:53:41

    Anda tidak boleh tamat tempoh token secara manual selepas penciptaan. Beginilah cara token berfungsi. Jika anda mencipta token ia akan sah sehingga ia tamat tempoh, tetapi anda boleh membuat senarai hitam token dan setiap kali anda memuat semula token, tambahkan token pertama pada senarai hitam, juga pertimbangkan untuk menurunkan jangka hayat token (jika cukup rendah), anda boleh bergantung pada mekanisme tamat tempoh automatik.

    balas
    0
  • Batalbalas