Heim > Backend-Entwicklung > PHP-Tutorial > Anwendungsfallanalyse des Laravel-Mehrbenutzer-Authentifizierungssystems

Anwendungsfallanalyse des Laravel-Mehrbenutzer-Authentifizierungssystems

php中世界最好的语言
Freigeben: 2023-03-26 14:20:01
Original
1619 Leute haben es durchsucht

Dieses Mal werde ich Ihnen eine Fallanalyse des Laravel-Mehrbenutzer-Authentifizierungssystems vorstellen. Was sind die Vorsichtsmaßnahmen bei der Verwendung des Laravel-Mehrbenutzer-Authentifizierungssystems? ein Blick.

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, können Sie die Authentifizierung über dasselbe Authentifizierungssystem erreichen.

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

#1 Code automatisch generieren

Laravels eigener Auth kann relevante Authentifizierung über eine Befehlszeile generierenController, Vorlage und Routing:

php artisan make:auth
Nach dem Login kopieren

Dadurch werden ein AuthController-Authentifizierungscontroller und ein HomeController-Universalcontroller generiert. Nach erfolgreicher Anmeldung werden nur einige Anmelde- und Registrierungsanforderungen erfüllt Durchsuchen der Ressource/Ansicht; und relevante Authentifizierungsrouten werden in der Routing-Datei generiert, die 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

Konfigurationsdatei , die sich auf die Authentifizierung bezieht. Es wird geschätzt, dass viele Menschen einige darin enthaltene Konzepte nicht verstehen Dokumentation für Wächter und Anbieter wird grundsätzlich nicht geschrieben. 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 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 über

Abhängigkeitsinjektion Request-Instanz, aber auch hier gibt es eine Gefahr: Vor Version 5.1 können Routing-Parameter über

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

$request->key
Nach dem Login kopieren
oder direkt von der Routing-Instanz bezogen werden. 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 den ersten 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生成器使用步骤详解

PHP命名空间namespace定义及导入use案例分析

Das obige ist der detaillierte Inhalt vonAnwendungsfallanalyse des Laravel-Mehrbenutzer-Authentifizierungssystems. 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