2017-01-08 101 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