我有两个不同的模型,需要对每个模型进行身份验证。
第一个模型工作正常,在config/auth.php
中预定义,但是当我尝试为第二个模型设置配置时,它不起作用。
我有第二个模型的以下代码:
public function loginParent(Request $request)
{
Config::set('auth.providers.users.model', ChildrenParent::class);
$credentials = $request->only('email', 'password');
try {
if (!$token = JWTAuth::attempt($credentials)) {
return response()->json(['error' => 'invalid_credentials'], 401);
}
} catch (JWTException $e) {
return response()->json(['error' => 'could_not_create_token'], 500);
}
return response()->json(compact('token'));
}
auth.php 的代码:
'providers' => [
'users' => [
'driver' => 'eloquent',
'model' => App\Employee::class,
],
],
'guards' => [
'web' => [
'driver' => 'session',
'provider' => 'users',
],
'api' => [
'driver' => 'token',
'provider' => 'users',
],
],
我测试了,如果我在 auth.php 中更改模型名称,它可以正常工作。
错误:它始终返回'无效凭据'。
修改 测试显示模型已成功更改,具体如下:
Config::set('auth.providers.users.model', ChildrenParent::class);
return Config::get('auth.providers.users.model');
return
语句返回第二个模型类,但为什么我总是得到无效的凭证?
修改
ChildrenParent
使用以下特征和接口:
use Illuminate\Database\Eloquent\Model;
use Illuminate\Notifications\Notifiable;
use Illuminate\Contracts\Auth\Authenticatable;
use Illuminate\Contracts\Auth\CanResetPassword as CanResetPasswordContract;
use Illuminate\Auth\Passwords\CanResetPassword;
use Illuminate\Auth\Authenticatable as AuthenticableTrait;
use Tymon\JWTAuth\Contracts\JWTSubject as AuthenticatableUserContract;