2017-03-03 100 views
0

我試圖在用戶註冊後自動登錄。Laravel 5.4 - 註冊後自動登錄

我的用戶註冊方法:

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) 
    ]); 
} 

我User_entity型號:

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'); 
     } 
} 

用戶註冊成功,並記錄在數據庫中。 但被顯示給登錄以下錯誤:

ErrorException在SessionGuard.php線407: 參數1傳遞給照亮\驗證\ SessionGuard ::登錄()必須照亮\合同\驗證\的一個實例可認證,應用程序\ User_entity的情況下給出的,稱爲/home/ali/www/brandmashhoor/vendor/laravel/framework/src/Illuminate/Auth/SessionGuard.php線392和定義

誰能告訴我什麼是正確的問題。

+0

如果用戶在數據庫中堅持,那麼實際的問題在於登錄方法不是寄存器之一。 – Drazxier

+0

包含你'User_entity'模型。 – Samsquanch

+0

@Samsquanch新增了 。 –

回答

1

User_entity必須擴展Illuminate\Foundation\Auth\User爲登錄工作。在默認的User型號中,這個別名爲Authenticatable

目前您正在延伸Eloquent,但Authenticatable延伸Illuminate\Database\Eloquent\Model這將爲您照顧。

User_entity模型試試這個:

use Illuminate\Foundation\Auth\User as Authenticatable; 

class User_entity extends Authenticatable 
{ 
    .... 
+1

謝謝。您的解決方案將解決問題。 –