未定义身份验证驱动程序 [api]
Posted
技术标签:
【中文标题】未定义身份验证驱动程序 [api]【英文标题】:Auth guard driver [api] is not defined 【发布时间】:2017-11-11 22:21:11 【问题描述】:我正在使用 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');
);
当我从邮递员那里发布电子邮件和密码时,它将返回令牌。
当我尝试访问时
http://localhost/demo/public/api/v2/home
并且标头我通过了授权承载令牌
我在邮递员中收到以下错误
哎呀,好像出了点问题。 (1/1) InvalidArgumentException 未定义身份验证保护驱动程序 [api]。在 AuthManager->resolve('api') 中的 AuthManager.php(第 99 行) AuthManager->guard('api') 中的 AuthManager.php(第 70 行) Authenticate->authenticate(array('api')) 处的 Authenticate.php(第 61 行)
可以帮我解决一下吗
我还检查了自 2016 年 9 月 27 日的旧问题以来的以下问题 https://github.com/tymondesigns/jwt-auth/issues/860
【问题讨论】:
【参考方案1】:确保在您的 kernel.php 文件中声明了它
protected $routeMiddleware =
【讨论】:
这并不能解决问题【参考方案2】:尝试设置token
:
'guards' => [
'web' => [
'driver' => 'session',
'provider' => 'users',
],
'api' => [
'driver' => 'token', // here !
'provider' => 'users',
],
],
【讨论】:
【参考方案3】:不一定是答案,但这是我使用过几次来安装和设置 JWT 令牌的文章,我没有遇到任何问题。
https://medium.com/employbl/build-authentication-into-your-laravel-api-with-json-web-tokens-jwt-cd223ace8d1a
希望这会有所帮助,祝你好运!
【讨论】:
【参考方案4】:我通过将此行添加到 config\app.php 中的提供程序解决了这个问题
'providers' => [
...
Tymon\JWTAuth\Providers\LaravelServiceProvider::class,
]
【讨论】:
【参考方案5】:如果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' => 'cyvu@mailinator.com',
'password' => 'Pa$$w0rd!',
'password_confirmation' => 'Pa$$w0rd!',
)
【讨论】:
【参考方案6】:我遇到了同样的问题。我通过添加解决了它
"tymon/jwt-auth": "^1.0"
在composer.json
的require array
中,然后运行composer install
【讨论】:
以上是关于未定义身份验证驱动程序 [api]的主要内容,如果未能解决你的问题,请参考以下文章
身份验证用户提供程序 [passport] 未使用 laravel 护照定义
创建通过外部 API 进行身份验证的自定义身份验证提供程序?
我正在尝试为 user 和 admin 实现 laravel 5.2 多重身份验证。但是未定义身份验证用户提供程序 [] 错误给出