【问题标题】:Getting 401 in all Laravel api requests在所有 Laravel api 请求中获取 401
【发布时间】:2018-01-05 18:58:54
【问题描述】:

我正在使用 Laravel 和 Passport 来通过 OAuth 保护我的 API。 虽然,在使用 PostMan 工具获得的授权令牌后,在我使用 Passport 中间件的所有请求中,我得到了 401。 我安装了 Laravel 两次并在互联网上四处寻找都没有成功,然后按照这个页面进行安装:click here。 有一些我的代码:

我尝试访问的路线:

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

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

});

授权守卫:

'guards' => [
    //..

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

更新 1:请求标头

Accept: application/json
Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImp0aSI6ImU5ZDcwZGY0ZjA2MGZhNDk5MzQ1ZjQyN2QxMWY1MDhkZDI2ZWQxODkzZDgxMTcxYWNkZGYxYTkxYzkwNWYxOGUyMTI2NzY0M2QwZmQyOWRiIn0.eyJhdWQiOiIxIiwianRpIjoiZTlkNzBkZjRmMDYwZmE0OTkzNDVmNDI3ZDExZjUwOGRkMjZlZDE4OTNkODExNzFhY2RkZjFhOTFjOTA1ZjE4ZTIxMjY3NjQzZDBmZDI5ZGIiLCJpYXQiOjE1MDE1Mjc2NDYsIm5iZiI6MTUwMTUyNzY0NiwiZXhwIjoxNTMzMDYzNjQ2LCJzdWIiOiIxIiwic2NvcGVzIjpbXX0.dbJ4jddUZx1BT9X81LQIY-Dcx6xdDtmm2nH_C6t7rgFYzRTjab6w7T1NXfzKNlAeyi4iWJAARSBDI32vCeGuAy1ukFvr0qkoEp8UIZEqeeQYYam1Oox_0fuLlJyzwkOIospEc53KZBB0AQrPpW12abxZiZ6asQ9S4AbEJa5N95QFaYRMlxPxEMQOFt28v5148-shawcmtdV-AuAOpvsmap5_f4vQ-NY9R_He0NS4zOOQEY7sPIaRrsQ_XEAJwyiGnrUyufLr02T8wDUcqTskxCtizZx0aHN8i8lz9_X7xBFMHLj4zI4R3wfuZTWlOww07HdBt1oX8PAWvTgA0lw4Sq_xeKa3-MfuCasC4Vh_KWuvHQAfTIuCQw4lPOELfWWaeJTaEuuos7YFbOdoZIHoQWVs4lcisKpHuTGd8bzIPY9GGYsG26LRZB62vX358bijUuurh8p3ajPOt45tmvJnYyaHdf1gW5YwEqbtb07bohMrLFCNhYT0JFZvKa54FRRbB6BLA4lToDA4j1secMKan8mRMLwjEhqyPD0qxBswiMc127ryQ4CLvtKZ75Weno3oAnZ29ZkgtJCTESMzFjd41K-KgrV-s9KTWvfvmOECQUTQz6xUZ5WyVLzPZdBi6wNRYdAp4xRTA1RNUH3TSAP9qYt-xWTwNANXLvL5gBkBjQM

PS:token 是 Vue 组件生成的 Personal Access Token。

【问题讨论】:

  • 你是如何传递访问令牌的?能否提供邮递员请求的截图?
  • 检查更新 1 @Sandeesh

标签: php laravel rest


【解决方案1】:

当使用邮递员时,您是否像这样在标题中强制使用 Content-Type

Content-Type: application/json 

【讨论】:

  • 是的,我正在使用该标头提出请求。当然,还有授权。
  • 您的授权标头值格式是什么?它应该Bearer <token>
【解决方案2】:

尝试以这种方式更新您的路线文件:

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

详细了解路由here

【讨论】:

  • 谢谢,但没有奏效。我正在尝试解决这个问题,但仍然没有修复。
  • 我正在获取令牌并在标头中使用,但它不起作用。
【解决方案3】:

在 Laravel 5.6 及更高版本中,cookie 没有序列化/反序列化。但是,Passport 仍然希望 cookie 被序列化。

要解决此问题,您只需将Passport::withoutCookieSerialization(); 添加到app\Providers\AuthServiceProvider::boot()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-06-03
    • 1970-01-01
    • 2020-06-18
    • 1970-01-01
    • 2019-03-02
    • 2017-04-16
    • 1970-01-01
    相关资源
    最近更新 更多