2017-03-03 2 views
0

Ich versuche, mich automatisch anzumelden, nachdem der Benutzer registriert.Laravel 5.4 - Auto login nach der Registrierung

Meine Benutzerregistrierungsmethode:

public function register_user(Request $request) 
{ 
    if (!$request->ajax()) return false; 

    $form_rule = [ 
     'email'  => 'required|email|max:255|unique:tdshop_user_entity', 
     'password' => 'required|min:6', 
    ]; 

    $validator = Validator::make($request->all(), $form_rule); 
    $status  = $validator->fails(); 

    $form_errors = []; 
    foreach($form_rule as $field=>$rules){ 
     $form_errors[$field] = $validator->errors()->first($field); 
    } 

    if(!$validator->fails()){ 
     $user = User_entity::create([ 
      'email'  => $request['email'], 
      'password' => bcrypt($request['password']), 
     ]); 
     Auth::loginUsingId($user->user_id); 
    } 

    return json_encode([ 
     'status' => ($status)? 'fail' : 'success', 
     'result' => json_encode($form_errors) 
    ]); 
} 

Mein User_entity Modell:

namespace App; 

    //use Illuminate\Database\Eloquent\Model; 
    use Illuminate\Notifications\Notifiable; 
    use Illuminate\Foundation\Auth\User as Authenticatable; 
    use Zizaco\Entrust\Traits\EntrustUserTrait; 
    use Eloquent; 

    class User_entity extends Eloquent 
    { 
     use Notifiable; 
     use EntrustUserTrait; 

     protected $table = 'tdshop_user_entity'; 
     protected $primaryKey = 'user_id'; 
     protected $fillable = ['email','password','status']; 
     protected $hidden = ['password', 'remember_token']; 

     public function Attribute_set() 
     { 
      return $this->hasOne('App\Attribute_set'); 
     } 

     public function Attribute_entity() 
     { 
      return $this->hasMany('App\Attribute_entity'); 
     } 

     public function User_address_entity() 
     { 
      return $this->hasMany('App\User_address_entity'); 
     } 
} 

Benutzerregistrierung ist erfolgreich und wird in der Datenbank gespeichert. Aber um sich einzuloggen folgende Fehlermeldung angezeigt:

Error in SessionGuard.php Linie 407: Argument 1 geben \ Auth \ SessionGuard :: Anmelden Illuminate() muss eine Instanz von Illuminate \ Verträge sein \ Auth \ authentifizierbarer, Instanz App \ User_entity gegeben, genannt in /home/ali/www/brandmashhoor/vendor/laravel/framework/src/Illuminate/Auth/SessionGuard.php auf der Leitung 392 und definiert

Kann mir jemand sagen, Was ist das richtige Problem?

+0

Wenn Benutzer in der Datenbank beibehalten wird, dann eigentliches Problem liegt in der Login-Methode nicht das Register ein. – Drazxier

+0

Schließen Sie das 'User_entity'-Modell ein. – Samsquanch

+0

@Samsquanch hinzugefügt . –

Antwort

1

Sie User_entity müssen Illuminate\Foundation\Auth\User erweitern, damit das Login funktioniert. Im Standardmodell User ist dies ein Alias ​​mit der Nummer Authenticatable.

Derzeit erweitern Sie Eloquent, aber Authenticatable erweitert Illuminate\Database\Eloquent\Model, die das für Sie kümmern wird.

Versuchen Sie dies in Ihrem User_entity Modell:

use Illuminate\Foundation\Auth\User as Authenticatable; 

class User_entity extends Authenticatable 
{ 
    .... 
+1

Vielen Dank. Ihre Lösung wird das Problem beheben. –

Verwandte Themen