我正在尝试让多身份验证系统正常工作,用户可以通过普通的门户网站登录,但单独的实体数据库(例如名为“机器人”)也可以通过 API 保护 token 驱动程序登录。但无论我做什么,我的设置都不会将我的身份验证防护引导到正确的机器人数据库,并继续尝试通过 token 将这些请求验证为用户(失败,因为用户没有 token )。
有人可以帮我找出哪里出了问题吗?
我首先在 Kernel.php 中组合了一个中间件组:
'api' => [
'throttle:60,1',
'auth:api',
],
这使用 config/auth.php 中的设置
'guards' => [
'web' => [
'driver' => 'session',
'provider' => 'users',
],
'api' => [
'driver' => 'token',
'provider' => 'robots',
],
],
'providers' => [
'users' => [
'driver' => 'eloquent',
'model' => App\User::class,
],
'robots' => [
'driver' => 'eloquent',
'model' => App\Models\Robot::class,
],
],
中间件在routes.php中被调用
Route::group(['middleware' => 'api'], function () {
Route::get('api/request', 'API\RequestController@index');
});
它使用这个模型:
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Contracts\Auth\Authenticatable;
class Robots extends Authenticatable
{
protected $fillable = [
'serial_number','api_token',
];
protected $guard = 'Robots';
protected $hidden = [
'api_token',
];
}
有什么想法吗?
更新:经过进一步检查,auth.php 中的大多数设置似乎都没有正确应用 - 有什么方法可以强制这些设置生效吗?
最佳答案
实际问题/解决方案:
Laravel 有一个单独的、很少提及的缓存,专门为其配置文件而存在。普通的缓存和类重置方法(例如 Composer dump-autoload 和 php artisan cache:clear )不会影响此缓存,这导致我处于没有任何设置的困惑状态在我的 auth.php 文件中生效。
清除此缓存的正确方法是使用以下命令:
php artisan 配置:缓存
php artisan 配置:清除
这些解决了我的问题。
关于php - 带 API 防护的 Laravel 5.2 多重身份验证使用错误的表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37426564/