Luc*_*sar 12 php authentication laravel-5.2
我正在尝试使用多auth系统工作,用户可以通过普通的Web门户登录,但是单独的实体数据库(例如,名为"机器人")也可以通过API保护令牌驱动程序登录.但无论我做什么,我的设置都不是将我的身份验证后卫指向正确的机器人数据库,并不断尝试通过令牌验证这些请求(由于用户没有令牌,因此失败).
有人能帮我找到我出错的地方吗?
我首先在Kernel.php中组建了一个中间件组:
'api' => [
'throttle:60,1',
'auth:api',
],
Run Code Online (Sandbox Code Playgroud)
这使用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,
],
],
Run Code Online (Sandbox Code Playgroud)
中间件在routes.php中调用
Route::group(['middleware' => 'api'], function () {
Route::get('api/request', 'API\RequestController@index');
});
Run Code Online (Sandbox Code Playgroud)
它使用这个模型:
<?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',
];
}
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?
更新:进一步检查时,似乎auth.php中的大多数设置都没有正确应用 - 有什么方法可以强制这些设置生效吗?
实际问题/解决方案:
Laravel 有一个单独的、很少提及的缓存,专门为其配置文件而存在。普通的缓存和类重置方法(例如composer dump-autoload和 )php artisan cache:clear不会影响此缓存,这导致我的 auth.php 文件中的所有设置都没有生效的混乱状态。
清除此缓存的正确方法是使用以下命令:
php artisan config:cache
php artisan config:clear
这些解决了我的问题。
| 归档时间: |
|
| 查看次数: |
2072 次 |
| 最近记录: |