php 未定义身份验证防护驱动程序[API]

1u4esq0p  于 12个月前  发布在  PHP
关注(0)|答案(7)|浏览(100)

我使用laravel 5.4和使用jwt auth jwt版本是jwt-auth "tymon/jwt-auth": "0.5.*"
在auth.php中我有

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

        'api' => [
            'driver' => 'jwt',
            'provider' => 'users',
        ],
    ],

在Api.php我有

Route::post('/login','HomeController@authenticate');

Route::group(['prefix' => 'v2','middleware' => 'auth:api',], function () {

    // Authentication Routes...
   Route::get('/logout','HomeController@logout');
Route::get('/home','HomeController@home');

});

当我从 Postman 发布电子邮件和密码时,它将返回令牌。
当我试图进入
http://localhost/demo/public/api/v2/home
and header i passed授权承载令牌
我在 Postman 中得到以下错误
哎呀,好像出了问题。(1/1)InvalidArgumentException未定义Auth guard driver [API]。在AuthManager.php(第99行)在AuthManager->resolve('api')在AuthManager.php(第70行)在AuthManager->guard('api')在Authenticate.php(第61行)在Authenticate->authenticate(array('api'))
你能帮我修一下吗
我也检查了follwing问题,因为它的旧的一个九月27,2016 https://github.com/tymondesigns/jwt-auth/issues/860

ctzwtxfj

ctzwtxfj1#

尝试设置token

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

        'api' => [
            'driver' => 'token', // here !
            'provider' => 'users',
        ],
    ],
cdmah0mi

cdmah0mi2#

确保在您的kernel.php文件中声明了它,

protected $routeMiddleware =
dphi5xsq

dphi5xsq3#

不一定是答案,但这是我用过几次安装和设置JWT令牌的文章,我没有遇到任何问题。
https://medium.com/employbl/build-authentication-into-your-laravel-api-with-json-web-tokens-jwt-cd223ace8d1a
希望这能有所帮助,祝你好运!

ht4b089n

ht4b089n4#

我通过将这一行添加到config\app.php中的提供程序来解决这个问题

'providers' => [
       ...
    Tymon\JWTAuth\Providers\LaravelServiceProvider::class,
   ]
mwg9r5ms

mwg9r5ms5#

如果API保护不存在,则可能发生错误。要解决此问题,必须将API防护设置为打开

root->config->auth.php [line:38]

如下

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

        'api' => [
            'driver' => 'token', // make sure to add token on API driver
            'provider' => 'users',
        ],
    ],

来自默认注册表表单的请求将具有以下输入

local.DEBUG: array (
  '_token' => 'J0FzfW7huNaJxcUZnjYXF9g63OOiSHaH9vZSBc73', // token is required from the request
  'name' => 'mygem',
  'phone' => '+1 (484) 853-6668',
  'email' => '[email protected]',
  'password' => 'Pa$$w0rd!',
  'password_confirmation' => 'Pa$$w0rd!',
)
fae0ux8s

fae0ux8s6#

我也有同样的问题。我通过加上

"tymon/jwt-auth": "^1.0"

composer.jsonrequire array中,然后运行composer install

e0bqpujr

e0bqpujr7#

如果你使用的是RoadRunner,那么你需要添加到app/config/roadrunner.php部分'reset_providers' Laravel Service Prodiver for JWT auth:\PHPOpenSourceSaver\JWTAuth\Providers\LaravelServiceProvider::class
参见https://github.com/roadrunner-php/laravel-bridge/issues/15

相关问题