Laravel: что такое ключ хранилища в аутентификации php? - PullRequest
0 голосов
/ 09 мая 2020

Из Аутентификация API , в нем говорится:

Если вы решите использовать другое имя столбца, обязательно обновите параметр конфигурации storage_key вашего API в config/auth.php файл конфигурации.

Вместо этого я использую столбец token, если api_token имя, которое используется по умолчанию для Laravel аутентификации API. В нем указано config storage_key, чтобы использовать другое имя. Я не могу найти такую ​​вещь, и поиск в Google ничего не сказал. Что такое storage_key и как я могу использовать это, чтобы установить token в качестве имени столбца аутентификации API, а не api_token?

Заранее спасибо

1 Ответ

1 голос
/ 09 мая 2020

Вот метод внутри Illuminate/Auth/AuthManager

/**
 * Create a token based authentication guard.
 *
 * @param  string  $name
 * @param  array  $config
 * @return \Illuminate\Auth\TokenGuard
 */
public function createTokenDriver($name, $config)
{
    // The token guard implements a basic API token based guard implementation
    // that takes an API token field from the request and matches it to the
    // user in the database or another persistence layer where users are.
    $guard = new TokenGuard(
        $this->createUserProvider($config['provider'] ?? null),
        $this->app['request'],
        $config['input_key'] ?? 'api_token',
        $config['storage_key'] ?? 'api_token'
    );

    $this->app->refresh('request', $guard, 'setRequest');

    return $guard;
}

, он находится на одном уровне с provider, также, как видно из класса, он находится на одном уровне с driver. вам нужно поместить storage_key и input_key внутри одного из выбранных guards (например, api), который вы будете использовать для аутентификации. По умолчанию они оба установлены на api_token.

'guards' => [
        'web' => [
            'driver' => 'session',
            'provider' => 'users',
        ],
        'api' => [
            'driver' => 'token',
            'provider' => 'users',
        ],
    ],
...