Heim >Backend-Entwicklung >PHP-Tutorial >Anwendungsfallanalyse des Laravel-Mehrbenutzer-Authentifizierungssystems
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
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'); }
# 2 auth.php-Dateikonfiguration
Dies ist dieKonfigurationsdatei , 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 überRouting-Parameter erreichen können. Definieren Sie eine Routing-Gruppe:
Route::group(['prefix'=>'{guard}'],function(){ Route::auth();});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')abgerufen werden. , aber es funktioniert nicht mehr in 5.2. Es muss über
$request->keyoder 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']);
#5 获取用户实例
通过认证后就可以通过Auth门面来获取到当前通过认证的用户实例。
$user = Auth::user();
这里还有一个要注意的是,以上的方式默认获取的是配置文件中的guard的,假如你当前登录的guard不是配置文件中的,就必须要这样子来获取:
$user = Auth::guard('guard')->user();
#6 总结
总得来说,Laravel5.2自带的Auth系统还是很好用的,只是有一些小坑文档没说清楚,用过几次之后就可以很熟悉了,可以给我们节约很多的开发时间。
相信看了本文案例你已经掌握了方法,更多精彩请关注php中文网其它相关文章!
推荐阅读:
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!