2017-02-02 4 views
1

Ich verwendete php artisan make:auth. Ich ändere die E-Mail in den Benutzernamen für die Anmeldung. In login.blade.php habe ich gerade E-Mail mit Benutzernamen ersetzt.Umleitung nach dem Login funktioniert nicht, aber funktioniert gut nach der Registrierung

<div class="form-group{{ $errors->has('username') ? ' has-error' : '' }}"> 
          <label for="username" class="col-md-4 control-label">Username</label> 

          <div class="col-md-6"> 
           <input id="username" type="name" class="form-control" name="username" value="{{ old('username') }}" required autofocus> 

           @if ($errors->has('username')) 
            <span class="help-block"> 
             <strong>{{ $errors->first('username') }}</strong> 
            </span> 
           @endif 
          </div> 
         </div> 

         <div class="form-group{{ $errors->has('password') ? ' has-error' : '' }}"> 
          <label for="password" class="col-md-4 control-label">Password</label> 

          <div class="col-md-6"> 
           <input id="password" type="password" class="form-control" name="password" required> 

           @if ($errors->has('password')) 
            <span class="help-block"> 
             <strong>{{ $errors->first('password') }}</strong> 
            </span> 
           @endif 
          </div> 
         </div> 

Nun, ich nicht Fehlermeldung für falsches credidentals bin immer und nicht für die korrekte credidentals zu /home umgeleitet, die Login-Seite neu geladen gerade. Ich fügte auch dieses 'username' => $data['username'], in create Funktion in RegisterController hinzu und es leitet erfolgreich zu/home nach der Registrierung aber nicht während der Anmeldung.

Ich habe diese Eigenschaft auch in logincontroller außer Kraft setzen: protected $username = 'username';

+0

Sind Sie eine Nachricht bekommen, wenn Sie setzen {{print_r ($ fehler)}} in der Vorlage? Es könnte sein, dass in Versuchen das E-Mail-Feld validiert, aber das existiert nicht, so dass es diesen Fehler jetzt nicht anzeigt. –

+0

@JanWytze Ich habe die Eros für E-Mail, aber ich brauche nicht wirklich diese Illuminate \ Support \ ViewErrorBag Objekt ([Taschen: geschützt] => Array ([Standard] => Illuminate \ Support \ MessageBag Objekt ([Nachrichten: geschützt ] => Array ([email] => Array ([0] => Das E-Mail-Feld ist erforderlich.)) [Format: protected] =>: message))) ' – Steve

Antwort

2

Sie folgende Funktion außer Kraft setzen Haben?

public function username() 

Standort: Verkäufer/Laravel/Rahmen/src/Illuminate/Stiftung/Auth/AuthenticatesUsers.php.

Änderung:

public function username() 
{ 
     return 'email'; 
} 

An:

public function username() 
{ 
     return 'username'; 
} 

Auch stellen Sie sicher, dass Sie den Benutzernamen Feld in der DB hinzugefügt.

Ihre LoginController sollte wie folgt aussehen:

<?php 

namespace App\Http\Controllers\Auth; 

use App\Http\Controllers\Controller; 
use Illuminate\Foundation\Auth\AuthenticatesUsers; 

class LoginController extends Controller 
{ 
    /* 
    |-------------------------------------------------------------------------- 
    | Login Controller 
    |-------------------------------------------------------------------------- 
    | 
    | This controller handles authenticating users for the application and 
    | redirecting them to your home screen. The controller uses a trait 
    | to conveniently provide its functionality to your applications. 
    | 
    */ 

    use AuthenticatesUsers; 

    public function username() 
{ 
    return 'username'; 
} 

    /** 
    * Where to redirect users after login/registration. 
    * 
    * @var string 
    */ 
    protected $redirectTo = '/home'; 


    /** 
    * Create a new controller instance. 
    * 
    * @return void 
    */ 
    public function __construct() 
    { 
     $this->middleware('guest', ['except' => 'logout']); 
    } 

} 
+0

ist diese Funktion nicht ähnlich dieser Eigenschaft 'protected $ username = 'username';'? – Steve

+0

@Steve Nein, es ist nicht zu sehen https://github.com/laravel/framework/blob/5.3/src/Illuminate/Foundation/Auth/AuthenticatesUsers.php –

+0

ok. Vielen Dank. Ich habe es funktioniert. – Steve

1

In Laravel 5.3 Sie die sendLoginResponse() Methode in LoginController.php außer Kraft setzen können, zum Beispiel:

protected function sendLoginResponse(Request $request) 
{ 
    $request->session()->regenerate(); 

    $this->clearLoginAttempts($request); 

    return redirect('/home'); 
} 
+0

Ich habe es gemacht, aber es leitet immer noch nicht um. Ich habe 'return redirect ('/ home');' in authenticated() verwendet. Ich versuche, die E-Mail in den Nutzernamen zu ändern. – Steve

+0

@Steve Ich habe die Antwort aktualisiert. –

+0

das hat auch nicht funktioniert. überschreiben 'username()' hat funktioniert. – Steve

Verwandte Themen