Rumah  >  Artikel  >  rangka kerja php  >  Artikel yang memperkenalkan mekanisme pelaksanaan Token dalam Laravel

Artikel yang memperkenalkan mekanisme pelaksanaan Token dalam Laravel

PHPz
PHPzasal
2023-04-23 09:13:141670semak imbas

Laravel ialah rangka kerja aplikasi web yang dibangunkan menggunakan bahasa pengaturcaraan PHP Prestasi cemerlangnya adalah disebabkan oleh penyepaduan dalaman sejumlah besar pakej sambungan yang berkuasa. Ini termasuk pelaksanaan asas Token. Token ialah kaedah pengesahan yang biasa digunakan dalam aplikasi web, dan biasanya digunakan untuk melindungi API dan perkhidmatan web daripada akses haram. Dalam artikel ini, kami akan memperkenalkan mekanisme pelaksanaan Token dalam Laravel.

1. Konsep token

Token, seperti namanya, merujuk kepada token, tanda yang boleh mewakili beberapa jenis maklumat identiti atau maklumat kebenaran. Ia biasanya dijana oleh pelayan dan dikeluarkan kepada klien Selepas klien menerima token, ia disimpan secara setempat dan ditambahkan pada pengepala permintaan atau parameter permintaan dalam permintaan seterusnya sebagai pengenalan pengesahan atau kebenaran. Pelayan boleh menentukan sama ada permintaan itu mempunyai maklumat pengesahan atau kebenaran dengan menyemak sama ada token itu sah.

Penggunaan token boleh melindungi aplikasi web dengan lebih berkesan daripada akses yang tidak dibenarkan, terutamanya dalam API dan perkhidmatan web, token adalah penting.

2. Pelaksanaan Token Laravel

Sebagai rangka kerja aplikasi web yang sangat baik, Laravel menyediakan sokongan Token dalam fungsi Auth terbina dalamnya. Dalam Laravel, Token dilaksanakan menggunakan pakej sambungan Laravel Sanctum.

2.1 Laravel Sanctum

Laravel Sanctum ialah pakej pengesahan ringan yang boleh menyediakan pengesahan API untuk aplikasi Laravel, berdasarkan kunci API atau Token, menjadikan aplikasi lebih baik Dijalankan dalam persekitaran tanpa negara, seperti SPA aplikasi, aplikasi halaman tunggal dan aplikasi mudah alih. Laravel Sanctum menyediakan fungsi berikut:

  1. Anda boleh mula menggunakannya tanpa konfigurasi
  2. Menyokong pelbagai kaedah pengesahan seperti sesi, Token dan kunci API
  3. Dibina -dalam pelbagai pelaksanaan pengesahan, seperti kuki, Token, pengesahan, dll.;
  4. Menyediakan pengesahan yang mudah dan penjanaan token;
  5. 2.2 Prinsip pelaksanaan Token

Dalam Laravel Sanctum, prinsip pelaksanaan Token adalah serupa dengan prinsip pelaksanaan sesi. Dalam permintaan, apabila klien membuat permintaan kepada pelayan, Token dihantar ke pelayan sebagai parameter permintaan atau medan Kebenaran dalam pengepala. Pelayan menyemak sama ada Token itu sah, dan dalam tempoh sah, memberikan kebenaran untuk operasi yang diminta atau mengembalikan mesej ralat. Proses pelaksanaan Token adalah seperti berikut:

Buat Token: Apabila pengguna log masuk, Sanctum akan menjana Token rawak untuk pengguna dan menyimpan Token dalam pangkalan data latar belakang; > Hantar Token: Hantar Token ke pelayan sebagai parameter permintaan atau medan Kebenaran dalam Pengepala
  1. Pengesahan token: Di bahagian pelayan, Sanctum akan menyemak sama ada Token yang diterima adalah sah dan memutuskan untuk membenarkan atau menolak; ;
  2. Pengurusan token: Sanctum menyediakan satu siri API untuk mencipta, membatalkan, mencari dan mengesahkan Token.
  3. 3. Penggunaan Token Laravel
  4. Sanctum menyediakan API yang mudah dan mudah digunakan untuk menggunakan Token, termasuk penciptaan Token, pembatalan, carian dan pengesahan, dsb. Berikut ialah cara Token digunakan:

3.1 Pasang Sanctum

Dalam aplikasi, anda perlu terlebih dahulu memperkenalkan pakej kebergantungan Sanctum ke dalam fail composer.json aplikasi:

Selepas pemasangan selesai, anda perlu menambah konfigurasi berikut pada fail config/app.php:

composer require laravel/sanctum
3.2 Konfigurasi penerbitan

Selepas pemasangan selesai, anda perlu untuk menjalankan arahan berikut untuk menerbitkan fail Konfigurasi Sanctum:
'providers' => [ 
    // Other service providers... 
    Laravel\Sanctum\SanctumServiceProvider::class, 
],

3.3 Mengkonfigurasi Middleware

Apabila menggunakan Sanctum, anda perlu menambah middleware pada laluan yang sepadan. Dalam Laravel, perisian tengah pengesahan API telah dibina dan boleh dipanggil terus.
php artisan vendor:publish --provider="Laravel\Sanctum\SanctumServiceProvider"

3.4 Cipta Token

Selepas log masuk, anda boleh menggunakan kod berikut untuk mencipta Token untuk pengguna semasa:

Dalam kod di atas, anda boleh melihat bahawa token dicipta Token, gunakan Ejen Pengguna mesin sebagai parameter tambahan. Ejen Pengguna di sini ialah pengepala HTTP yang merekodkan maklumat berkaitan penyemak imbas atau aplikasi. Maklumat ini akan digunakan sebagai sebahagian daripada Token, supaya apabila Token dicuri atau digunakan secara berniat jahat, ia boleh ditemui dengan mudah dan dibatalkan.

3.5 Batal Token
use Illuminate\Http\Request; 
use Illuminate\Support\Facades\Hash; 
use Illuminate\Validation\ValidationException; 
use App\Models\User; 
use Illuminate\Support\Facades\Auth; 
use Illuminate\Support\Facades\Route; 

// 创建Token 
Route::post('/api/token/create', function (Request $request) { 
    $request->validate([ 
        'email' => 'required|email', 
        'password' => 'required', 
    ]); 

    $user = User::where('email', $request->email)->first(); 

    if (! $user || ! Hash::check($request->password, $user->password)) { 
        throw ValidationException::withMessages([ 
            'email' => ['The provided credentials are incorrect.'], 
        ]); 
    } 

    return $user->createToken($request->header('User-Agent'))->plainTextToken; 
});

Setelah Token yang dibuat dicuri atau tidak sah, ia boleh dibatalkan menggunakan kod berikut:

3.6 Sambungan Pengesahan

Sanctum juga Menyediakan sambungan pengesahan yang baik, yang boleh memudahkan kawalan akses Kod adalah seperti berikut:
Auth::user()->tokens()->delete();

Selepas menggunakan kod di atas, kita boleh menggunakan antara muka tin dalam model Pengguna untuk kawalan akses. Kod tersebut adalah seperti berikut:

use Illuminate\Http\Request; 
use Illuminate\Support\Facades\Hash; 
use Illuminate\Validation\ValidationException; 
use App\Models\User; 
use Illuminate\Support\Facades\Auth; 
use Illuminate\Support\Facades\Route; 
use Laravel\Sanctum\HasApiTokens;

class User extends Authenticatable 
{
    use HasApiTokens, Notifiable;
}
Dalam kod di atas, boleh akan menentukan sama ada pengguna mempunyai hak untuk melaksanakan operasi kemas kini berdasarkan peranan, kebenaran dan dasar pengguna semasa. Perlu diingatkan bahawa pengguna perlu melaksanakan logik kawalan akses mereka sendiri dengan betul.

4. Ringkasan
$request->user()->can('update', $post);

Dalam artikel ini, kami memperkenalkan mekanisme pelaksanaan asas Token dalam Laravel, terutamanya cara menggunakan pakej sambungan Sanctum. Sanctum menyediakan API yang mudah dan mudah digunakan yang boleh disepadukan dengan cepat ke dalam aplikasi dan meningkatkan keselamatan aplikasi. Penggunaan, penciptaan, pembatalan dan pengurusan Token, serta kawalan akses semuanya dijelaskan secara terperinci.

Dalam dunia Internet hari ini, dengan aplikasi API dan perkhidmatan Web yang meluas, Token, sebagai kaedah pengesahan, akan digunakan dengan lebih meluas dalam banyak aplikasi. Rangka kerja Laravel menyediakan mekanisme pelaksanaan Token yang baik yang boleh melindungi aplikasi web daripada akses haram dengan lebih baik.

Atas ialah kandungan terperinci Artikel yang memperkenalkan mekanisme pelaksanaan Token dalam Laravel. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn