2017-04-02 4 views
1

Wenn ein Benutzer versucht, sich bei meiner Laravel-Anwendung anzumelden und das Passwort nicht mit der Spalte "password" in der Datenbank übereinstimmt, möchte ich es mit einer anderen Passwortspalte überprüfen ("old_system_password")) auch.Benutzerdefiniertes Passwort für die Anmeldung mit Laravel 5.4

Ich benutze das Standard-Laravel-Authentifizierungssystem, und soweit ich weiß, sollte ich in der Lage sein, einen neuen "AuthController" zu erstellen und die eingebauten Authentifizierungsmethoden zu überschreiben. Aber ich finde keine Methoden, die sich mit dem Passwortabgleich im Lieferantenordner befassen, und ich weiß auch nicht, wie ich Laravel mitteilen soll, dass er meine Methode anstelle der Standardmethode verwenden soll.

Ich habe das Internet nach diesem gesucht, aber alle gefundenen Lösungen scheint nur für ältere Versionen von Laravel zu sein.

Irgendwelche Ideen?

Antwort

-1

Erste Lösung: außer Kraft setzen Gerade public function authenticate() in LoginController.php

public function authenticate() 
{ 
    if (Auth::attempt(['email' => $email, 'password' => $password])) { 
     // Authentication passed... 
     return redirect()->intended('dashboard'); 
    } else if(Auth::attempt(['email' => $email, 'password' => $old_password]) { 
     return redirect()->intended('dashboard'); 
    } 
} 

Check: https://laravel.com/docs/5.4/authentication#authenticating-users

Zweite Lösung:

1: Führen Sie php artisan event:generate Laravel Ereignisse zu erzeugen.

2: Führen php artisan make:event CheckOldPassword

3: Fügen Sie Ereignis in EventServiceProvider.php 'Illuminate\Auth\Events\Failed' => ['App\Listeners\CheckOldPassword'],

4: Erstellen Funktion public function handle(Failed $event){}

5: Manuelles Überprüfen Anmeldungen in Veranstaltung.

0

Wahrscheinlich versuchen, die Middleware der Authentifizierung verwenden, wie dies standardmäßig suchen:

<?php 

namespace App\Http\Middleware; 

use Closure; 
use Illuminate\Support\Facades\Auth; 

class RedirectIfAuthenticated 
{ 
    /** 
    * Handle an incoming request. 
    * 
    * @param \Illuminate\Http\Request $request 
    * @param \Closure $next 
    * @param string|null $guard 
    * @return mixed 
    */ 
    public function handle($request, Closure $next, $guard = null) 
    { 
     if (Auth::guard($guard)->check()) { 
      return redirect('/home'); 
     } 

     return $next($request); 
    } 
} 

Versuchen zu überprüfen, ob der Benutzer dann authentifiziert wurde, wenn nicht eine Funktion aufrufen, die Ihr Passwort nehmen und prüfen in Ihrer Datenbank .