Laravel Sanctum ialah perpustakaan pengesahan pengguna ringan yang disyorkan secara rasmi oleh rangka kerja Laravel Ia direka untuk menyediakan pengesahan yang ringkas dan moden untuk aplikasi satu halaman (SPA) dan aplikasi mudah alih. Artikel ini akan memperkenalkan cara menggunakan Laravel Sanctum untuk melaksanakan pengesahan keselamatan untuk aplikasi SPA.
1. Pasang Laravel
Mula-mula anda perlu memasang Laravel anda boleh memasang versi terkini Laravel melalui komposer:
projek cipta komposer --prefer-dist laravel/laravel anda. -project-name
2. Konfigurasikan Sanctum
Selepas memasang Laravel, anda perlu mengkonfigurasi Sanctum terlebih dahulu:
komposer memerlukan laravel/sanctum
Di bawah versi Laravel 5.5, anda perlu menambah penyedia perkhidmatan dan fasad dalam fail config/app.php: 'providers' => [... LaravelSanctumSanctumServiceProvider::class,
... 'Sanctum' => LaravelSanctumSanctum::class,
Buat fail index.blade.php dalam sumber/pandangan , digunakan untuk memaparkan antara muka SPA.
Tulis laluan API dalam route/api.php. Kami mencipta laluan ujian di sini untuk mengembalikan maklumat pengguna pengguna yang sedang disahkan:
return $request->user();
{
$request->validate([ 'name' => 'required|string|max:255', 'email' => 'required|string|email|unique:users|max:255', 'password' => 'required|string|min:8|confirmed' ]); $user = new User([ 'name' => $request->name, 'email' => $request->email, 'password' => Hash::make($request->password) ]); $user->save(); return response()->json([ 'message' => 'Successfully registered' ], 201);
}
{
$request->validate([ 'email' => 'required|string|email', 'password' => 'required|string', 'remember_me' => 'boolean' ]); $credentials = request(['email', 'password']); if (!Auth::attempt($credentials)) { return response()->json([ 'message' => 'Unauthorized' ], 401); } $user = $request->user(); $tokenResult = $user->createToken('Personal Access Token'); $token = $tokenResult->token; if ($request->remember_me) { $token->expires_at = Carbon::now()->addWeeks(1); } $token->save(); return response()->json([ 'access_token' => $tokenResult->accessToken, 'token_type' => 'Bearer', 'expires_at' => Carbon::parse( $tokenResult->token->expires_at )->toDateTimeString() ]);
}
Sekarang anda mempunyai semua kod yang diperlukan untuk membuat token, pendaftaran pengguna dan log masuk pengguna, kami akan mula membina proses pengesahan.
Aplikasi SPA menggunakan Sanctum untuk menghantar permintaan POST untuk mengesahkan kelayakan pengguna melalui parameter e-mel dan kata laluan. Jika pengesahan berjaya, aplikasi menerima Token OAuth.
return $request->user()->name;
Pastikan anda memastikan fail titik masuk Laravel anda mengandungi perpustakaan JavaScript yang diperlukan (di sini menggunakan Vue.js, Penghala Vue dan Axios ). Dalam fail resources/js/app.js, tentukan komponen Vue:
require('./bootstrap');
import App from ' ./views/App';
import penghala daripada './router';import kedai daripada './store';
Vue.component('App', App);
el: '#app', router, store
Kemas kini penghalaan API, petakan penghalaan SPA ke AckController dan pastikan perisian tengah akan menggunakan konfigurasi Sanctum:
Route::middleware('auth : sanctum')->get('/user', function (Minta $request) {
return $request->user();
Route::post('/login', 'APIAuthController@login');
Route::middleware('auth:sanctum')->get('/spa/ { any}', function () {
return view('index');
{
$request->validate(['email' => 'required|email']); $user = User::where('email', $request->email)->first(); if (!$user) { return response()->json([ 'message' => 'We could not find your account' ], 404); } else { $user->sendPasswordResetNotification($request->email); } return response()->json([ 'message' => 'We have e-mailed your password reset link!' ]);
}
{
$request->validate([ 'email' => 'required|email', 'token' => 'required|string', 'password' => 'required|string|confirmed|min:8' ]); $resetPasswordStatus = Password::reset($request->only('email', 'password', 'password_confirmation', 'token'), function ($user, $password) { $user->forceFill([ 'password' => Hash::make($password) ])->save(); }); if ($resetPasswordStatus === Password::INVALID_TOKEN) { return response()->json(['message' => 'The reset token is invalid']); } return response()->json(['message' => 'Your password has been updated']);
}
7. Tambahkan penghalaan
Dalam Laravel Sanctum, penghalaan perlu dikonfigurasikan untuk mendayakan pengesahan, perlindungan CSRF dan perlindungan ralat Gunakan groban/laravel-livewire untuk melaksanakan penghalaan untuk aplikasi SPA.
8. Jalankan aplikasi SPA
Selepas melengkapkan langkah di atas, kita boleh menggunakan arahan berikut untuk menjalankan aplikasi SPA:
npm run dev
Buka dalam pelayar Jalankan alamat IP hos atau URL pada peranti untuk melihat aplikasi SPA.
Akhir sekali, kami telah berjaya menggunakan Laravel Sanctum untuk melaksanakan pengesahan keselamatan untuk aplikasi SPA. Dengan pendekatan ini, data aplikasi boleh dilindungi, menghalang capaian yang tidak dibenarkan dan melindungi maklumat peribadi.
Atas ialah kandungan terperinci Pembangunan PHP: Gunakan Laravel Sanctum untuk melaksanakan pensijilan keselamatan aplikasi SPA. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!