无法在laravel中使用tymon jwt生成令牌
问题描述:
我坚持了约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的新人,并且很久以来一直在努力。谢谢。
答
您正在使用软件包的较新版本。这要求User Model
实施此合同。通过在您的模型中执行此操作来解决此问题:
use Tymon\JWTAuth\Contracts\JWTSubject;
class User extends Model implements JWTSubject {
谢谢!你解决了我的问题。 – schenker