为什么我不能使用PHP Laravel 5.6为jwt-auth提供程序设置Config?

时间:2018-03-27 15:51:18

标签: php laravel laravel-5 jwt-auth

我有两个不同的模型,需要对每个模型进行身份验证。

第一个模型工作正常,在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;

0 个答案:

没有答案