我的开发环境中安装了Laravel护照。我注意到无论我是否登录,我的api路线都可以正常工作。我的一条路线的例子是
Route::get('/users', function () {
return factory('App\User', 10)->make();
});
不应该使用api中间件自动验证它,因为它在api路径中?
答案 0 :(得分:1)
你应该试试这个:
Route::group(['middleware' => 'auth:api'], function() {
Route::get('/users', function () {
return factory('App\User', 10)->make();
});
});
答案 1 :(得分:0)
但是为了保护你的路线,不需要使用路由注册后声明的中间件吗?
https://laravel.com/docs/5.5/passport#protecting-routes
即:
Route::get('/users', function () {
return factory('App\User', 10)->make()})->middleware('auth:api');
答案 2 :(得分:0)
要使用经过身份验证的,您应该按照以下方式修改路线
Route::get('/users', function () {
return factory('App\User', 10)->make();
})->middleware('auth');
此外,如果您没有使用默认的用户类
,请修改文件config / auth.php'providers' => [
'users' => [
'driver' => 'eloquent',
'model' => App\{your User class name}::class,
],
答案 3 :(得分:0)
您可能需要在/app/Http/Kernel.php
中添加绑定
https://laravel.com/docs/5.6/passport#via-middleware
示例:
protected $middlewareGroups = [
'web' => [
...
],
'api' => [
'throttle:60,1',
'bindings',
'auth:api',
],
];
如果您想使用令牌范围,请使用范围:
'scopes' => \Laravel\Passport\Http\Middleware\CheckScopes::class,
'scope' => \Laravel\Passport\Http\Middleware\CheckForAnyScope::class,
完整文件示例:
https://github.com/jeremykenedy/laravel-passport/blob/master/app/Http/Kernel.php