2017-03-03 142 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

谢谢。您的解决方案将解决问题。 –