Laravel implementiert ein Mehrbenutzer-Authentifizierungssystem

php中世界最好的语言
Freigeben: 2023-03-22 09:28:01
Original
2490 Leute haben es durchsucht

Dieses Mal werde ich Ihnen Laravel zur Implementierung eines Mehrbenutzer-Authentifizierungssystems vorstellen. Was sind die Vorsichtsmaßnahmen für Laravel zur Implementierung eines Mehrbenutzer-Authentifizierungssystems? sehen.

Vorwort

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 eigener Auth kann relevante Authentifizierung über eine Befehlszeile

Controller und Vorlagen generieren und Routen:

php artisan make:auth
Nach dem Login kopieren
Dadurch werden ein AuthController-Authentifizierungscontroller und ein HomeController-Universalcontroller generiert. Dieser Controller ist nutzlos, er springt nur nach erfolgreicher Anmeldung an. Sie können die erforderliche Vorlage finden Dateien durch Suchen in Ressource/Ansicht; und relevante Authentifizierungsrouten werden in den Routing-Dateien generiert. Der Quellcode befindet sich in

, der tatsächlich einige Anmelde- und Registrierungsfunktionen 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'); 
}
Nach dem Login kopieren

#2 auth.php-Dateikonfiguration

Dies ist die authentifizierungsbezogene

Konfigurationsdatei, die viele Leute möglicherweise nicht verstehen. Einige darin enthaltene Konzepte, wie z Wache und Anbieter, werden grundsätzlich nicht dokumentiert. 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 Registrierungsanforderungen erfüllen, die jedoch jeder Wachmann benötigt ein AuthController Komm schon, wie teilt man einen Authentifizierungscontroller? 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 erhalten werden, sodass wir ihn über

Routing-Parameter erreichen können. Definieren Sie eine Routing-Gruppe:

Route::group(['prefix'=>'{guard}'],function(){ Route::auth();});
Nach dem Login kopieren
In dieser Routing-Gruppe setzen wir das Präfix auf den Guard-Parameter, damit der aktuelle Guard im AuthController abgerufen werden kann. 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 über

abgerufen werden
$request->input('key')
Nach dem Login kopieren
so Um es zu bekommen, aber es funktioniert nicht mehr in 5.2. Es muss über

$request->key
Nach dem Login kopieren
abgerufen werden, oder es kann direkt von der Routing-Instanz abgerufen werden dafür. 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

und $redirectTo und $guard 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. $username

#4 Routenschutz

一般做认证系统的,都是要来保护路由的,那么如何保护路由呢?文档里面说给需要保护的路由添加一个auth中间件,那么事实是怎样的呢?事实也确实是这样,不过文档没有说的一点是,通过auth中间件保护的路由必须还要加上web中间件、必须还要加上web中间件、必须还要加上web中间件,重要的事情要说三遍啊,不然会出现什么问题呢?不管你认证成功失败都是会跳转到/这条路由,这个大坑要注意!当然你也可以在中间件中指定guard来让Laravel知道通过那个来认证,如果没指定的话就是使用配置文件里面默认的:

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

#5 获取用户实例

通过认证后就可以通过Auth门面来获取到当前通过认证的用户实例。

$user = Auth::user();
Nach dem Login kopieren

这里还有一个要注意的是,以上的方式默认获取的是配置文件中的guard的,假如你当前登录的guard不是配置文件中的,就必须要这样子来获取:

$user = Auth::guard('guard')->user();
Nach dem Login kopieren

#6 总结

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

相信看了本文案例你已经掌握了方法,更多精彩请关注php中文网其它相关文章!

推荐阅读:

PHP实现路由和类自动加载

bindParam和bindValue在Yii2中的使用详解

Das obige ist der detaillierte Inhalt vonLaravel implementiert ein Mehrbenutzer-Authentifizierungssystem. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage