2017-01-08 64 views
1

我坚持了约3天。基本上,我试图在使用Tymon的laravel中生成一个JWT令牌。这是我的控制器文件。无法在laravel中使用tymon jwt生成令牌

<?php 
namespace App\Http\Controllers; 
use Illuminate\Http\Request; 
use App\Http\Requests; 
use App\User; 
use JWTAuth; 
use JWT; 
use Tymon\JWTAuthExceptions\JWTException; 
use Tymon\JWTAuth\Contracts\JWTSubject as JWTSubject; 

class AuthenticateController extends Controller 
{ 
public function index() 
{ 
// 
} 
public function authenticate(Request $request) 
{ 

    $user = User::where('email', $request->only('email'))->first(); 
    dd($user); //This does show some output  
    $token = JWTAuth::fromUser($user); //returns error message 

    return ["error" => NULL, "token" => $token]; 

} 
} 

我测试使用Chrome邮递员这个API,但报告该错误:

ErrorException在JWT.php线73:传递给Tymon \ JWTAuth \ JWT :: FROMUSER 参数1()必须是Tymon \ JWTAuth \ Contracts \ JWTSubject的一个实例,在给定的App \ User实例中,在/Users/shankerm/mccadmin/laravel/vendor/laravel/framework/src/Illuminate/Support/Facades/Facade.php中在线调用217和定义

请给我一些建议。我是Laravel的新人,并且很久以来一直在努力。谢谢。

回答

1

您正在使用软件包的较新版本。这要求User Model实施此合同。通过在您的模型中执行此操作来解决此问题:

use Tymon\JWTAuth\Contracts\JWTSubject; 

class User extends Model implements JWTSubject { 
+0

谢谢!你解决了我的问题。 – schenker