首页 > 解决方案 > Laravel:auth.php 中的存储密钥是什么?

问题描述

API Authentication,它说

如果您选择使用不同的列名,请务必storage_key在配置文件中更新 API 的配置选项config/auth.php

如果name 是 Laravel API 身份验证的默认名称,我使用tokencolumn 代替。api_token它说配置storage_key使用不同的名称。我找不到这样的东西,谷歌搜索没有说什么。什么是 storage_key以及如何使用它来设置tokenAPI 身份验证列名不是api_token

提前致谢

标签: laravellaravel-5

解决方案


这是里面的方法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_keyguardsapiapi_token

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

推荐阅读