【问题标题】:Laravel 5.4 Api Route 401Laravel 5.4 Api 路线 401
【发布时间】:2017-09-03 00:12:34
【问题描述】:

我构建了一个新的 laravel 5.4 项目。

我尝试在我的 api 路由中执行以下步骤,但不知何故它们不起作用。

在我的 app.js 文件中,我有这个 ajax 调用:

$.ajaxSetup({
    headers: {
        'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content'),
    }
});
$.ajax({
    url: 'api/postStream',
    type: 'post',
    data: { imgData: imgData },
    success:function(data) {
        console.log('success');
    }
});

我的 Api 路由如下所示:

Route::group(['middleware' => 'auth:api'], function()
{
    Route::post('postStream', ['as' => 'image', 'uses' => 'ApiController@postStream']);
});

还有我的控制器:

public function postStream(Request $request)
{
    $imgData = $request->imgData;
    ...
}

但我在我的 chrome 开发控制台中收到此错误:

POST http://localhost/app/public/api/postStream 401 (Unauthorized)

在网络工具中:

{error: "Unauthenticated."}
error
:
"Unauthenticated."

我想我有点没有经过身份验证,但我不知道如何以这种方式实现。

【问题讨论】:

标签: php laravel api laravel-5.3 laravel-5.4


【解决方案1】:

它不起作用,因为您的路由受auth:api 保护,它返回401 unauthorized。通过auth:api 的唯一方法是在每个请求中发送您的身份验证令牌

var token = <?php json_encode(Auth::user()->api_token); ?>; //if you are using api_token

$.ajax({
    url: 'api/postStream',
    headers: {
        'Authorization':'Bearer ' + token,
    },
    type: 'post',
    ...
});

获得令牌的方式完全取决于您。您可以使用 Passport 或只是将 api_token 添加到您的用户表的最简单的解决方案。

如果你想要最便宜的解决方案,你可以关注这个帖子:https://gistlog.co/JacobBennett/090369fbab0b31130b51

【讨论】:

  • 您好,我离开了几天,无法回复您,所以我按照kopy.io/WIZp1 构建了 ajax 标头必须看起来如何?我没有得到Bearer 的东西
  • 您需要一个 api 令牌来“承担”授权。我给了你一个链接,看看如何将 api_token 添加到你的用户。因为你需要它来进行身份验证。
猜你喜欢
  • 2017-06-29
  • 2017-09-20
  • 2017-12-13
  • 2017-07-27
  • 1970-01-01
  • 2018-04-18
  • 1970-01-01
  • 2017-10-12
  • 2018-04-13
相关资源
最近更新 更多