Heim  >  Artikel  >  Backend-Entwicklung  >  Einführung in das Mehrbenutzer-Authentifizierungssystem von Laravel

Einführung in das Mehrbenutzer-Authentifizierungssystem von Laravel

小云云
小云云Original
2018-03-14 09:17:501076Durchsuche

Seit Laravel 5.2 kann das integrierte Auth-Authentifizierungssystem die Authentifizierung mehrerer Rollen unterstützen. Das heißt, wenn Sie zwei Rollen haben: Administrator und normaler Benutzer, kann die Authentifizierung über dasselbe Authentifizierungssystem erfolgen.

Dieser Artikel gibt Ihnen eine detaillierte Einführung in den relevanten Inhalt des Mehrbenutzer-Authentifizierungssystems und teilt ihn als Referenz und zum Studium. Ich werde im Folgenden nicht viel sagen, werfen wir einen Blick auf die Einzelheiten Einführung.

#1 Code automatisch generieren

Laravels eigenes Auth kann relevante Authentifizierungscontroller und -vorlagen mit einer Befehlszeile und Routing generieren:


php artisan make:auth
Dadurch wird ein AuthController-Authentifizierungscontroller und ein HomeController-Generalcontroller generiert. Dieser Controller springt nur nach erfolgreicher Anmeldung dorthin Für die Anmeldung und Registrierung sind auch einige Vorlagendateien erforderlich. Schauen Sie sich einfach die entsprechende Authentifizierungsroute an. Der Quellcode befindet sich in

, der tatsächlich einige Anmeldungen konfiguriert: IlluminateRoutingRouter::auth();


public function auth() { 
 // Authentication Routes... 
 $this->get('login', 'Auth\AuthController@showLoginForm'); 
 $this->post('login', 'Auth\AuthController@login'); 
 $this->get('logout', 'Auth\AuthController@logout'); 
 // Registration Routes... 
 $this->get('register', 'Auth\AuthController@showRegistrationForm'); 
 $this->post('register', 'Auth\AuthController@register'); 
 // Password Reset Routes... 
 $this->get('password/reset/{token?}', 'Auth\PasswordController@showResetForm'); 
 $this->post('password/email', 'Auth\PasswordController@sendResetLinkEmail'); 
 $this->post('password/reset', 'Auth\PasswordController@reset'); 
}

#2 auth.php-Dateikonfiguration

Dies ist eine Es wird geschätzt, dass viele Leute einige darin enthaltene Konzepte, wie z. B. Wächter und Anbieter, nicht verstehen können und die Dokumentation im Grunde nicht geschrieben ist. Was genau ist Wächter? Dies kann als Rolle verstanden werden. Jedes Element im Guards

-Array ist eine Rolle. Die Standardrollen sind Web und API, was bedeutet, dass diese beiden Rollen derzeit das Authentifizierungssystem verwenden. Natürlich werden diese beiden definitiv nicht unseren Anforderungen entsprechen, daher passen wir normalerweise einige Wachen an. Die Anpassung ist ebenfalls sehr einfach. Fügen Sie einfach ein Element zum Guards-Array hinzu. Der Treiber gibt an, wie der Benutzerstatus für diese Authentifizierung gespeichert werden soll, normalerweise in der Sitzung, und der Anbieter ist ein Element im Provider-Array unten Anbieter? Wolltuch? Das ist einfacher zu verstehen. Wenn Sie die Benutzerauthentifizierung implementieren möchten, müssen Sie den Benutzernamen und das Kennwort speichern. Dann teilt der Anbieter Laravel mit, in welcher Tabelle Ihre Benutzerinformationen gespeichert sind, und der Treiber teilt Laravel mit, welche Methode zum Betrieb verwendet werden soll die Datenbank.


#3 Authentifizierung
Tatsächlich kann der von Laravel automatisch generierte Code bereits die Anmelde- und Anmeldeanforderungen erfüllen Registrierung, aber jedes Mal benötigt jeder Wächter einen AuthController. Wie kann man also einen Authentifizierungscontroller freigeben? Guard wird hier verwendet, weil es die Identität des Benutzers darstellen kann, um unterschiedliche Logik auszuführen. Dieser Schutz kann jedoch nicht im Authentifizierungscontroller abgerufen werden, sodass wir ihn über Routing-Parameter erreichen können. Definieren Sie eine Routing-Gruppe:



In dieser Routing-Gruppe legen wir das Präfix für den Guard-Parameter fest, damit wir das aktuelle in AuthController Guarded erhalten können. Unter normalen Umständen erhalten wir Routing-Parameter durch Abhängigkeitsinjektion in die Request-Instanz, aber auch hier gibt es eine Gefahr: Vor Version 5.1 konnten die Routing-Parameter übergeben werden
Route::group(['prefix'=>'{guard}'],function(){ Route::auth();});



kann auf diese Weise bezogen werden, ist jedoch in 5.2 nicht mehr möglich. Es muss über
$request->input('key')



bezogen werden , oder direkt von der Routing-Instanz Get, weiß nicht warum. Einige Merkmale werden im AuthController-Controller verwendet. Diese Merkmale implementieren die Logik der Authentifizierungsregistrierung. Sie können die Logik anpassen, indem Sie einige Eigenschaften des Controllers neu schreiben. Einschließlich
$request->key
und

und $redirectTo usw. Auf einen Blick können Sie erkennen, dass der erste darin besteht, nach erfolgreicher Anmeldung zu springen, der zweite darin besteht, den aktuell verwendeten Schutz zu definieren, und der dritte darin besteht Benutzername, der für die Authentifizierung verwendet wird. Wir können es also anpassen, indem wir den Schutz im Authentifizierungscontroller erhalten. $guard$username

#4 Routenschutz
Im Allgemeinen müssen diejenigen, die Authentifizierungssysteme herstellen, Routen schützen, also was ist damit? geschütztes Routing? In dem Dokument heißt es, den zu schützenden Routen eine Authentifizierungs-Middleware hinzuzufügen, aber wie sieht die Realität aus? Dies ist tatsächlich der Fall, aber das Dokument sagt nicht, dass die durch Authentifizierungs-Middleware geschützte Route auch mit Web-Middleware hinzugefügt werden muss, dass sie auch mit Web-Middleware hinzugefügt werden muss, dass sie auch mit Web-Middleware hinzugefügt werden muss, was wichtig ist Sie haben Dinge dreimal sagen, welche Probleme würden sonst entstehen? Unabhängig davon, ob Ihre Authentifizierung erfolgreich ist oder nicht, werden Sie auf die /-Route verweisen. Seien Sie vorsichtig mit dieser großen Gefahr! Natürlich können Sie auch einen Guard in der Middleware angeben, um Laravel mitzuteilen, über welchen Guard er sich authentifizieren soll. Wenn nicht angegeben, wird der Standard in der Konfigurationsdatei verwendet:



Route::get('profile', [ 'middleware' => 'auth:api', 'uses' => 'ProfileController@show']);

#5 Benutzerinstanz abrufen
Nach bestandener Authentifizierung können Sie die aktuell authentifizierte Benutzerinstanz über die Auth-Fassade abrufen .



Eine weitere Sache, die hier zu beachten ist, ist, dass die obige Methode den Wächter standardmäßig in der Konfigurationsdatei abruft, wenn Sie derzeit beim Wächter angemeldet sind Wenn es nicht in der Konfigurationsdatei enthalten ist, müssen Sie es wie folgt abrufen:
$user = Auth::user();


$user = Auth::guard('guard')->user();

#6 总结

总得来说,Laravel5.2自带的Auth系统还是很好用的,只是有一些小坑文档没说清楚,用过几次之后就可以很熟悉了,可以给我们节约很多的开发时间。

相关推荐:

Laravel多用户认证系统


Das obige ist der detaillierte Inhalt vonEinführung in das Mehrbenutzer-Authentifizierungssystem von Laravel. 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