【发布时间】:2017-10-19 12:38:34
【问题描述】:
我正在开发一个基于Laravel 5.4.24 并与Symfony 组件和Doctrine 集成的项目。我需要根据 site_staffs 表 (SiteStaff model) 的请求对员工进行身份验证并返回令牌。
site_staffs 表包含以下列:(id,site_id, code, number,..)。 SiteStaff entity (id,site, code,..) 中的某些列具有不同的名称。
users 还有另一个表,我对用户进行身份验证并返回令牌没有问题。 (就我而言,我不需要对用户进行身份验证,我只是为了测试而这样做)。
问题是当我尝试更改 JWT 的默认设置以验证来自 site_staffs 表中的员工时,如下所示,我收到一条错误消息(请参阅页面下方):
配置/jwt.php:
//'user' => 'App\User',
'user' => 'App\Entities\SiteStaff',
配置/auth.php:
'guards' => [
'web' => [
'driver' => 'session',
'provider' => 'users',
],
'api_token' => [
'driver' => 'api_token',
'provider' => 'users',
],
//'api' => [
//'driver' => 'jwt',
//'provider' => 'users',
//],
],
'providers' => [
'users' => [
'driver' => 'doctrine',
//'model' => App\Entities\User::class,
'model' => App\Entities\SiteStaff::class,
],
pi/SiteStaffController:
我将凭据传递给 JWT,如下所示:
$credentials =
[
'site' => $bpId,
'code' => $lanyard_code
];
if(! $token = JWTAuth::attempt($credentials)){
return response()->json(['error' => ['messages' =>
['Invalid credentials'] ]
], IlluminateResponse::HTTP_UNAUTHORIZED);
}else{
dd($token);
}
这是我得到的错误:
Type error: Argument 1 passed to
Tymon\JWTAuth\Providers\User\EloquentUserAdapter::__construct() must be an
instance of Illuminate\Database\Eloquent\Model, instance of
App\Entities\SiteStaff given, called in /vagrant/vendor/tymon/jwt-
auth/src/Providers/JWTAuthServiceProvider.php on line 126
我尝试了许多不同的方法和解决方案,但没有一个对我有用。如果你能让我知道什么是错的,我错过了什么,我将不胜感激? 非常感谢您的帮助。
【问题讨论】:
标签: php laravel symfony doctrine-orm