Construí un nuevo proyecto laravel 5.4.
Traté de hacer los pasos a continuación en mi ruta api, pero de alguna manera no funcionan.
En mi archivo app.js tengo esta llamada 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'); } });Mi ruta Api se ve así:
Route::group(['middleware' => 'auth:api'], function() { Route::post('postStream', ['as' => 'image', 'uses' => 'ApiController@postStream']); });Y mi controlador:
public function postStream(Request $request) { $imgData = $request->imgData; ... }Pero recibo este error en mi consola de desarrollo de Chrome:
POST http://localhost/app/public/api/postStream 401 (Unauthorized)Y en las herramientas de red esto:
{error: "Unauthenticated."} error : "Unauthenticated."Supongo que de alguna manera no estoy autenticado, pero no sé cómo hacer que eso suceda de esta manera.
No funciona porque su ruta está protegida por auth:api , que devuelve 401 unauthorized . La única forma de pasar por auth:api es enviar su token de autenticación con cada solicitud
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', ... });La forma en que obtienes tu token depende completamente de ti. Puede usar Passport o simplemente la solución más fácil que es agregar api_token a su tabla de usuarios.
Si busca la solución más económica, puede seguir esta publicación: https://gistlog.co/JacobBennett/090369fbab0b31130b51