Laravel 5.2 JSON ответ на запрос с неправильным api_token

Я использую промежуточное ПО auth: api в контроллере (Laravel 5.2).

class RestfulController extends Controller
    {

        public function __construct() {
            $this->middleware(['api', 'auth:api'], ['except' => ['login'] ]);
        }

    }

маршруты:

Route::group(['prefix' => 'api'], function () {
    Route::get('/login', ['uses' => 'RestfulController@login', 'as'=>'login']);
    Route::get('/list', ['uses' => 'RestfulController@list', 'as'=>'list']);
});

Если запрос не содержит или содержит недопустимый фреймворк api_token, перенаправляет на страницу входа. Вместо этого я хотел бы вернуть ответ JSON с ошибкой. Как это можно реализовать?


person user947668    schedule 10.04.2016    source источник
comment
Здравствуйте, вы можете показать свой файл маршрутов?   -  person dyachenko    schedule 10.04.2016


Ответы (2)


измените метод дескриптора app / Http / Middleware / Authenticate.php, он ответит json

public function handle($request, Closure $next, $guard = null)
{
    if (Auth::guard($guard)->guest()) {
        if ($request->ajax() || $request->wantsJson()) {
            return response('Unauthorized.', 401);
        } else {
            $response = [
                'status' => 'error',
                'message' => 'This is error message'
            ];
            return Response::json($response);
        }
    }

    return $next($request);
}
person Imtiaz Pabel    schedule 10.04.2016

Вы должны проверить группы промежуточного программного обеспечения api и auth:api и найти, что это делает одна из них. Если он находится внутри пакета поставщика, вам необходимо его расширить и внести изменения.

person henriale    schedule 10.04.2016
comment
Приведите, пожалуйста, пример для лучшего незыблемости - person Babul Mirdha; 28.08.2019