ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

php – Laravel Passport“auth:api”中间件充当“web,auth”中间件

2019-07-27 11:42:18  阅读:463  来源: 互联网

标签:php laravel oauth-2-0 laravel-passport


我已经按照官方文档(https://laravel.com/docs/5.3/passport#introduction)中的描述为Laravel 5.3设置了Laravel Passport包.

我希望API由移动应用程序使用,因此我尝试实现密码授予令牌.我创建了一个密码授予客户端,以及令牌请求进程……

$response = $http->post('http://my-app.com/oauth/token', [
    'form_params' => [
        'grant_type' => 'password',
        'client_id' => 'client-id',
        'client_secret' => 'client-secret',
        'username' => 'my@email.com',
        'password' => 'my-password',
        'scope' => '',
    ],
]);

…按预期工作,为我的一个用户返回访问令牌和刷新令牌.

一方面,

php artisan route:list

列出api / user URI的正确中间件:api,auth:api

api guard的驱动程序在config / auth.php中正确设置为passport.
总而言之,安装过程的每一步都已完成(https://laravel.com/docs/5.3/passport#installation).

默认api.php的内容:

Route::get('/user', function (Request $request) {
    return $request->user();
})->middleware('auth:api');

当我访问http://my-app.com/api/user时出现问题,因为它似乎是使用’web’中间件验证请求,而不是’api’…
当我访问时,如果用户未登录,我将被重定向到/ login(登录表单),如果是…则重定向到/ home

任何帮助将非常感激.
提前致谢.

解决方法:

解决了!仅供记录,解决方案:

我发送请求到http://my-app.com/api/user与HTTP标头错误.我发送:

Type: Authorization - Content: Bearer: $accessToken 

……正确的方法是:

Type: Authorization - Content: Bearer $accessToken (without colon)

我从没想过这可能是一个错字……无论如何,错误并不容易被发现,因为重定向到登录表单从一开始就误导了我.我相信这确实是一种奇怪的行为……

标签:php,laravel,oauth-2-0,laravel-passport
来源: https://codeday.me/bug/20190727/1553517.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有