Heim  >  Artikel  >  Backend-Entwicklung  >  PHP-Entwicklung: Verwenden Sie Laravel Sanctum, um die SPA-Anwendungssicherheitszertifizierung zu implementieren

PHP-Entwicklung: Verwenden Sie Laravel Sanctum, um die SPA-Anwendungssicherheitszertifizierung zu implementieren

WBOY
WBOYOriginal
2023-06-14 11:37:091502Durchsuche

Laravel Sanctum ist eine leichtgewichtige Benutzerauthentifizierungsbibliothek, die offiziell vom Laravel-Framework empfohlen wird. Sie wurde entwickelt, um eine einfache und moderne Authentifizierung für Single-Page-Anwendungen (SPA) und mobile Anwendungen bereitzustellen. In diesem Artikel wird erläutert, wie Sie mit Laravel Sanctum die Sicherheitsauthentifizierung für SPA-Anwendungen implementieren.

1. Laravel installieren
Zuerst müssen Sie Laravel installieren. Sie können die neueste Version von Laravel über Composer installieren:

composer create-project --prefer-dist laravel/laravel your-project-name

2. Konfigurieren Sie Sanctum
Laravel installieren Wenn Sie Sanctum später konfigurieren müssen, führen Sie bitte zuerst den folgenden Befehl aus:

composer require laravel/sanctum

In Versionen unter Laravel 5.5 müssen Sie Dienstanbieter und Fassaden in der Datei config/app.php hinzufügen:

'providers' => [

...
LaravelSanctumSanctumServiceProvider::class,

],

'aliases' => [

...
'Sanctum' => LaravelSanctumSanctum::class,

],

In Laravel 5.5 und höher ist es nicht erforderlich, Dienstanbieter oder Fassaden manuell hinzuzufügen.

Sie müssen dann eine Datenbankmigration durchführen, um die von Sanctum benötigten Tabellen zu erstellen:

php artisan migrate

Wenn Ihre Anwendung die SPA-Authentifizierung verwenden muss, sollten Sie Ihre Anwendungsdomäne und vertrauenswürdige Domänen hinzufügen. Im folgenden Beispiel gehen wir davon aus, dass Sie eine Backend-API mit einer Frontend-Anwendung erstellen:

'paths' => ['api/*', 'sanctum/csrf-cookie'],

'allowed_methods' => '*'],

'allowed_origins' => *'],

'exposed_headers' => false,

'supports_credentials' => true,

3. Erstellen Sie einen API- und Authentifizierungscontroller .php-Datei in resources/views, um die SPA-Schnittstelle anzuzeigen.

Schreiben Sie API-Routen in Routen/api.php. Wir erstellen hier eine Testroute, um die Benutzerinformationen des aktuell authentifizierten Benutzers zurückzugeben:

Route::middleware('auth:sanctum')->get('/user', function (Request $request) {

return $request->user();

}) ;

Als nächstes müssen wir einen SPA-anwendungsspezifischen Controller hinzufügen, um Sanctum-Tokens zu erstellen und zu verwalten. Dieser Controller ist für die Erstellung von Token und die Ausgabe von Authentifizierungscookies für Benutzer verantwortlich.

Erstellen Sie zunächst einen API-Controller im Ordner app/Http/Controllers, z. B. AuthController:

php artisan make:controller API/AuthController

Fügen Sie dann Register- und Anmeldemethoden in AuthController hinzu:

public function register(Request $request )

{

$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);

}

öffentliche Funktionsanmeldung (Request $request)

{

$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()
]);

}

4. Umgang mit der Authentifizierung

Jetzt haben Sie unten alles Notwendige, um ein Token, eine Benutzerregistrierung und einen Benutzeranmeldecode zu erstellen Wir beginnen mit dem Aufbau des Authentifizierungsprozesses.


SPA-Anwendung verwendet Sanctum zum Senden einer POST-Anfrage zur Überprüfung der Benutzeranmeldeinformationen per E-Mail und Passwortparametern. Bei erfolgreicher Authentifizierung erhält die Anwendung das OAuth-Token.

Wenn Sie eine SPA-Anwendung verwenden, fügen Sie Authorization: Bearer d6fb5a6237ab04b68d3c67881a9080fa in den Headern hinzu, um über Anwendungsrouting auf die geschützte API zuzugreifen.

Nach Abschluss der Authentifizierung können Sie die Authentifizierungsroute über Sanctum verwenden, um die Informationen des aktuell authentifizierten Benutzers abzurufen. Beispielsweise können wir den Namen des aktuell authentifizierten Benutzers mithilfe des folgenden Codes abrufen:

Route::middleware('auth:sanctum')->get('/user', function (Request $request) {

return $request->user()->name;

}) ;

5. Erstellen Sie relevante Seiten und Komponenten

Stellen Sie sicher, dass Ihre Laravel-Einstiegspunktdatei die erforderlichen JavaScript-Bibliotheken enthält (hier werden Vue.js, Vue Router und Axios verwendet). Definieren Sie in der Datei resources/js/app.js die Vue-Komponente:

require('./bootstrap');

import Vue from 'vue';

import App from './views/App';

import router from './router';
import store from './store';

Vue.component('App', App);

const app = new Vue({

el: '#app',
router,
store

});

Ressource erstellen Datei „Clip view“ und „views/App.vue“ und fügen Sie die erforderlichen Komponenten hinzu (Anmeldeformular, Registrierungsformular usw.). Erstellen Sie alle erforderlichen Seitenkomponenten im Ansichtenordner.

Zur Vereinfachung der Demonstration ist die Codemenge hier etwas größer. Bitte überprüfen Sie selbst die offizielle Laravel-Dokumentation.

6. API-Routing und AckController rekonstruieren

API-Routing aktualisieren, SPA-Routing AckController zuordnen und sicherstellen, dass die Middleware die Sanctum-Konfiguration verwendet:

Route::middleware('auth:sanctum')->get(' / user', function (Request $request) {

return $request->user();

});

Route::post('/register', 'APIAuthController@register');
Route::post('/login', 'APIAuthController@ login ');

Route::middleware('auth:sanctum')->get('/spa/{any}', function () {

return view('index');

})->where('any', ' . *');

Wir fügen in AckController die Methoden „forgotPassword“ und „resetPassword“ hinzu, um Anfragen von Benutzern zu verarbeiten, die ihre Passwörter vergessen haben, und um auf Linkanfragen zum Zurücksetzen von Passwörtern zu reagieren:

public function forgotPassword(Request $request)

{

$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!'
]);

}

public Funktion resetPassword(Request $request)

{

$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. Routing hinzufügen
In Laravel Sanctum muss Routing konfiguriert werden, um Authentifizierung, CSRF-Schutz und Fehlerschutz zu ermöglichen. Verwenden Sie groban/laravel-livewire, um Routing für SPA-Anwendungen zu implementieren.

8. Führen Sie die SPA-Anwendung aus
Nach Abschluss der obigen Schritte können wir den folgenden Befehl verwenden, um die SPA-Anwendung auszuführen:

npm run dev

Öffnen Sie die Host-IP-Adresse oder URL auf dem laufenden Gerät im Browser, um sie anzuzeigen das SPA-Anwendungsprogramm.

Schließlich haben wir Laravel Sanctum erfolgreich zur Implementierung der Sicherheitsauthentifizierung von SPA-Anwendungen eingesetzt. Mit diesem Ansatz können Anwendungsdaten gesichert, unbefugter Zugriff verhindert und private Informationen geschützt werden.

Das obige ist der detaillierte Inhalt vonPHP-Entwicklung: Verwenden Sie Laravel Sanctum, um die SPA-Anwendungssicherheitszertifizierung zu implementieren. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn