Laravel 5.4 Api 路线 401
Posted
技术标签:
【中文标题】Laravel 5.4 Api 路线 401【英文标题】:Laravel 5.4 Api Route 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."
我想我有点没有经过身份验证,但我不知道如何以这种方式实现。
【问题讨论】:
这对您有帮助吗? laracasts.com/discuss/channels/laravel/… 你确定你到达了正确的端点吗?我的猜测是http请求应该去localhost/api/postStream。 如果您使用['middleware' => 'auth:api']
,则需要传递访问令牌。遵循创建 API、保护 API 和请求 API 密钥的步骤。首先,您需要获取访问密钥并通过 ajax 调用传递它。我正在使用 Passport
为我的 API 提供身份验证。 laravel.com/docs/5.4/passport
@webDev 嗯好的,你知道一个教程可以进一步解释这个吗?这个:laravel.com/docs/5.4/passport ?
【参考方案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 添加到你的用户。因为你需要它来进行身份验证。以上是关于Laravel 5.4 Api 路线 401的主要内容,如果未能解决你的问题,请参考以下文章
Laravel 护照 oauth 路线总是返回 401 未经授权