Wie erstellen Laravel 5.1 Benutzerdefinierte Authentifizierung Treiber?
Arbeite ich in Laravel-Authentifizierung login mit socialite. Jetzt kann ich in der Lage, zum speichern von Daten des Benutzers aus dem socialite. Aber jetzt stehe ich vor problem wie authentifizieren sich Nutzer von Google Mail, github.
Nach einigen Recherchen habe ich verstanden, dass ich brauche zum erstellen von benutzerdefinierter Authentifizierung. Ich habe mal gegoogelt aber alle sind Laravel 4.1 Themen. Wenn eine Arbeit auf diesem geben Sie bitte Ihre Antworten.
Ich bereits Lesen Sie folgende Themen, aber ich wusste nicht, wie es zu tun?
http://laravel.com/docs/5.1/authentication#social-authentication
http://laravel.com/docs/5.1/providers
http://laravel-recipes.com/recipes/115/using-your-own-authentication-driver
http://laravel.io/forum/11-04-2014-laravel-5-how-do-i-create-a-custom-auth-in-laravel-5
Update
public function handleProviderCallback() {
$user = Socialite::with('github')->user();
$email=$user->email;
$user_id=$user->id;
//$authUser = User::where('user_id',$user_id)->where('email', $email)->first();
$authUser = $this->findOrCreateUser($user);
if(Auth::login($authUser, true)) {
return Redirect::to('user/UserDashboard');
}
}
private function findOrCreateUser($user) {
if ($authUser = User::where('user_id',$user->id)->first()) {
return $authUser;
}
return User::create([
'user_id' => $user->id,
'name' => $user->nickname,
'email' => $user->email,
'avatar' => $user->avatar
]);
}
- Warum denken Sie, müssen Sie zum erstellen von benutzerdefinierter Authentifizierung? Socialite hat Treiber für beide, Google und GitHub.
- bin neu in laravel.ich kann in der Lage, Daten zu speichern, aber jetzt stehe ich vor problem, wie ich mich authentifizieren kann
Du musst angemeldet sein, um einen Kommentar abzugeben.
Hinzufügen Von Benutzerdefinierten Authentifizierung Drivers In Laravel 5.1
Hinweis: Laravel Dokumentation zu diesem Thema ist hier.
Hint2: Den letzten link, den Sie angesprochen haben, ist sehr nützlich, meiner Meinung nach. Ich erfuhr dies alles nach der Lektüre, dass link.
http://laravel.io/forum/11-04-2014-laravel-5-how-do-i-create-a-custom-auth-in-laravel-5
Bevor wir beginnen, möchte ich zunächst beschreiben Sie die login-Strömung, die helfen, Sie verstehen, den Prozess. Laravel nutzt eine
driver
Verbindung zu der Datenbank zu Holen Ihre Unterlagen. Zwei Fahrer kommen pre-gebündelt mit laravel -eloquent
&database
. Wir möchten, erstellen Sie eine Dritte, so dass wir es anpassen an unsere Bedürfnisse.Illuminate\Auth\Guard
in Ihrem vendor-Ordner in der Haupt-Datei, die code für das Benutzer-log-in und log-out. Und diese Datei verwendet hauptsächlich zweiContracts (or interfaces)
, die wir überschreiben müssen, um auf unseren Fahrer zu arbeiten. Von Laravel eigene Dokumentation Lesen Sie diese:Also die Idee ist, dass für unsere Fahrer, um Arbeit, die wir implementieren müssen
Illuminate\Contracts\Auth\UserProvider
undIlluminate\Contracts\Auth\Authenticatable
und sagen, Laravel verwenden diese Implementierungen anstelle der Standardwerte.Also lassen Sie uns beginnen.
Step 1:
Wählen Sie einen Namen für Ihre Fahrer. Ich Namen mine
socialite
. Dann in Ihreconfig/auth.php
ändern Sie diedriver
Namensocialite
. Dadurch wir gerade gesagt, laravel, um diesen Treiber verwenden für die Authentifizierung statteloquent
die default.Step 2:
In Ihrem
app/Provider/AuthServiceProvider
imboot()
- Methode fügen Sie die folgenden Zeilen:Was wir hier getan:
Auth
Fassade zu definieren, diesocialite
Treiber.SocialiteUserProvider
ist eine Implementierung vonUserProvider
.AuthService
ist meine Erweiterung vonGuard
Klasse. Der zweite parameter dieser Klasse ist der Konstruktor ist die Sitzung, die laravel verwendet, um get-und set-Sitzungen.Guard
- Klasse anstelle des Standard ein.Step 3:
Erstellen
SocialiteUserProvider
. Wenn Sie Lesen, der Laravel Dokumentation, Sie werden verstehen, was diese Methoden zurückgeben sollte. Ich habe die erste Methode als ein Beispiel. Wie Sie sehen können, ich meineUserService
Klasse um Ergebnisse zu Holen. Holen Sie Ihre eigenen Ergebnisse, aber Sie wollen, um Sie zu Holen. Dann erstellte ich eineUser
Objekt aus ihm heraus. DieseUser
- Klasse implementiert dieIlluminate\Contracts\Auth\Authenticatable
Vertrag.Step 4:
Erstellen
User
Klasse implementiert dieAuthenticatable
. Diese Klasse muss dieses interface implementieren, weil dieGuard
Klasse wird diese Klasse verwenden, um Werte.Step 5:
Schließlich erstellen Sie die Klasse AuthService aufrufen, werden die
Guard
Methoden. Dies ist meine eigene Umsetzung. Sie können Ihre eigenen erstellen, wie pro Ihre Bedürfnisse. Was wir getan haben, hier verlängert sich dieGuard
Klasse zu implementieren, die zwei neue Funktionen, die selbsterklärend sind.Step 6: Bonus Step
Nur um meine komplette Antwort, ich werde auch erklären, die Struktur, die
UserService
Klasse erwartet. Zunächst können verstehen, was diese Klasse tut. In unserem oben genannten Schritte, die wir alles erschaffen zu lassen, laravel wissen, wie unser Authentifizierungs-Fahrer, statt des ihrigen. Aber wir haben immer noch nicht gesagt, laravel, dass, wie sollte es Holen Sie sich die Daten. Alles, was wir gesagt, laravel, dass, wenn Sie rufen Sie dieuserService->getUserByEmail($email)
- Methode, erhalten Sie Ihre Daten. So, jetzt müssen wir einfach zum implementieren dieser Funktion.E. g.1 verwenden Sie
Eloquent
.E. g.2 Sie sind mit
Fluent
.Update: 19 Jun 2016
Danke @skittles für den Hinweis, das habe ich nicht deutlich gezeigt , wo die Dateien abgelegt werden sollen. Alle Dateien abgelegt werden sollen, die als pro den Namensraum gegeben. E. g. wenn der namespace ist
App\Extensions
und der name der KlasseSocialiteUserProvider
dann den Speicherort der Datei istApp\Extensions\SocialiteUserProvider.php
. DieApp
Verzeichnis in laravel ist dieapp
Ordner.PSR4
ist ein PHP-coding-standard, die Menschen sind nun die Umsetzung in Ihrem code. Was soll Ihr name sein, wo soll es platziert werden, verwenden Sie Leerzeichen statt tabs, und andere Dinge wie, dass.Gutes tutorial für die Einrichtung laravel Dame hier: https://mattstauffer.co/blog/using-github-authentication-for-login-with-laravel-socialite
Auth::login
nicht einen booleschen Wert zurückgeben, die Sie verwenden können, zu versuchen zu tun, einAuth::attempt
Folgen Sie dem tutorial und tun dies, und nur konfigurierte middleware auf dem home-route