我正在尝试获得一个多用户认证系统,用户可以通过普通的门户网站进行登录,但单独的实体数据库(例如名为“机器人”)也可以通过API保护令牌驱动程序登录.但是无论我做什么,我的设置都不是将我的身份验证保护人员指向正确的Robot数据库,并且不断尝试通过令牌验证用户(由于用户没有令牌而失败).
@H_301_26@
实际问题/解决方案:
有人可以帮我找到哪里出错了吗?
我已经开始在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,
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缓存:clear不影响此缓存,这导致我的auth.PHP文件中没有任何设置的混乱状态生效.
清除此缓存的正确方法是使用以下命令:
PHP artisan config:cache
PHP artisan config:清楚
这些解决了我的问题.