传递给 Tymon\JWTAuth\JWTGuard::login() 的参数 1 必须实现接口 Tymon\JWTAuth\Contracts\JWTSubject

Cun*_*rtA 2 jwt laravel

我收到此错误:

Argument 1 passed to Tymon\JWTAuth\JWTGuard::login() must implement interface Tymon\JWTAuth\Contracts\JWTSubject
Run Code Online (Sandbox Code Playgroud)

每当我想用我的用户登录时。

但是,我搜索了所有内容,发现的只是将其实现到用户模型中,但已经完成了,如您在此处看到的:

Argument 1 passed to Tymon\JWTAuth\JWTGuard::login() must implement interface Tymon\JWTAuth\Contracts\JWTSubject
Run Code Online (Sandbox Code Playgroud)

代币创建:

namespace App;

use Tymon\JWTAuth\Contracts\JWTSubject;
use Illuminate\Notifications\Notifiable;
use Illuminate\Foundation\Auth\User as Authenticatable;
use Illuminate\Support\Facades\Auth;

class User extends Authenticatable implements JWTSubject
{
    public function getJWTIdentifier()
    {
        return $this->getKey();
    }
    
    public function getJWTCustomClaims()
    {
        return [];
    }

    ...
    ...
}
Run Code Online (Sandbox Code Playgroud)

尽管我已经像文档所说的那样更改了所有内容,为什么仍然出现此错误?

小智 11

你只需要做一个简单的步骤

从这里变更用户模型线

User 类扩展了 Authenticatable

对此

User 类扩展了 Authenticatable 实现 JWTSubject

和你的问题解决。