utd*_*dev 4 php api laravel laravel-5.3 laravel-5.4
我构建了一个新的 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');
}
});
Run Code Online (Sandbox Code Playgroud)
我的 Api 路由如下所示:
Route::group(['middleware' => 'auth:api'], function()
{
Route::post('postStream', ['as' => 'image', 'uses' => 'ApiController@postStream']);
});
Run Code Online (Sandbox Code Playgroud)
还有我的控制器:
public function postStream(Request $request)
{
$imgData = $request->imgData;
...
}
Run Code Online (Sandbox Code Playgroud)
但我在我的 chrome 开发控制台中收到此错误:
POST http://localhost/app/public/api/postStream 401 (Unauthorized)
Run Code Online (Sandbox Code Playgroud)
在网络工具中:
{error: "Unauthenticated."}
error
:
"Unauthenticated."
Run Code Online (Sandbox Code Playgroud)
我想我有点没有经过身份验证,但我不知道如何以这种方式实现。
它不起作用,因为您的路线受 保护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',
...
});
Run Code Online (Sandbox Code Playgroud)
您获得令牌的方式完全取决于您。您可以使用 Passport 或简单的解决方案,即将 api_token 添加到您的用户表中。
如果您要寻找最便宜的解决方案,可以关注此帖子:https : //gistlog.co/JacobBennett/090369fbab0b31130b51
| 归档时间: |
|
| 查看次数: |
21238 次 |
| 最近记录: |