2017-09-02 152 views
0

我已经编写了使用JWT验证进行注册和登录的代码。在这个代码注册功能工作正常,但登录功能不起作用。登录功能会提示一个错误类“照亮\基金会\验证\用户”未找到未找到Class'Illuminate Foundation Auth User'JWT验证Laravel

我的用户模型是

<?php 

namespace App; 

use Illuminate\Database\Eloquent\Model; 
use Illuminate\Foundation\Auth\User as Authenticatable; 
class User extends Authenticatable 
{ 
    protected $table = 'users'; 
    public $timestamps = false; 
    protected $primaryKey = 'user_name'; 
    protected $fillable = ['user_name','password']; 
} 

我UserController的是

class UsersController extends Controller 
{ 

    public function login() 
    { 
     $credentials = request()->only('user_name','password'); 
     try{ 
      $token = JWTAuth::attempt($credentials); 
      if($token){ 
       return response()->json(['error'=>'invalid_credentials'],401); 
      } 
     } 
     catch(JWTException $e){ 
      return response()->json(['error'=>'something went wrong'],500); 
     } 
     return response()->json(['token'=>$token],200); 
    } 

    public function register() 
    { 
     $user_name = request()->user_name; 
     $password = request()->password; 
     $user = User::create([ 
      'user_name'=>$user_name, 
      'password'=>bcrypt($password) 
     ]); 

     $token = JWTAuth::fromUser($user); 

     return response()->json(['token'=>$token],200); 
    } 
} 

登录功能显示了错误的

Class 'Illuminate\Foundation\Auth\User' not found 

回答

0

与我的用户模型中存在的问题,我解决了它

<?php 

namespace App; 

use Illuminate\Auth\Authenticatable; 
use Illuminate\Database\Eloquent\Model; 
use Illuminate\Auth\Passwords\CanResetPassword; 
use Illuminate\Contracts\Auth\Authenticatable as AuthenticatableContract; 
use Illuminate\Contracts\Auth\CanResetPassword as CanResetPasswordContract; 

class User extends Model implements AuthenticatableContract, CanResetPasswordContract 
{use Authenticatable, CanResetPassword; 

    // 
    protected $table = 'users'; 
    public $timestamps = false; 
    protected $primaryKey = 'user_name'; 
    protected $fillable = ['user_name','c_name','accessibility_level','password','role','contact_number','address']; 
} 
0

在你的控制器我猜你忘了使用你的模型“用户”添加它的命名空间声明下面,或者它与Illuminate\Foundation\Auth\User

use\App\User; 

冲突,你必须运行以下命令:

composer update 
composer dump-autoload 
+0

是的,我已经使用了用户模型。但是存在错误 – Muthu

+0

是否更新了你的作曲家依赖关系?检查编辑答案 – Sletheren

+0

仍然无法正常工作 – Muthu