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 BefehlszeileController und Vorlagen generieren und Routen:
php artisan make:auth
, 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'); }
#2 auth.php-Dateikonfiguration
Dies ist die authentifizierungsbezogeneKonfigurationsdatei, 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 überRouting-Parameter erreichen können. Definieren Sie eine Routing-Gruppe:
Route::group(['prefix'=>'{guard}'],function(){ Route::auth();});
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')
$request->key
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']);
#5 获取用户实例
通过认证后就可以通过Auth门面来获取到当前通过认证的用户实例。
$user = Auth::user();
这里还有一个要注意的是,以上的方式默认获取的是配置文件中的guard的,假如你当前登录的guard不是配置文件中的,就必须要这样子来获取:
$user = Auth::guard('guard')->user();
#6 总结
总得来说,Laravel5.2自带的Auth系统还是很好用的,只是有一些小坑文档没说清楚,用过几次之后就可以很熟悉了,可以给我们节约很多的开发时间。
相信看了本文案例你已经掌握了方法,更多精彩请关注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!