Так у меня перед фильтром на мой запрос REST API, как следующее:Laravel 4,2 возвращает ответ JSON с Auth :: onceBasic()
Route::filter('auth.api', function() {
Config::set('session.driver', 'array');
return Auth::onceBasic('username');
});
Это отлично работает для меня, за исключением, что я предпочел бы его возвращение ответ json. Поэтому я попытался окружить его в Request::json()
, и это провалилось с треском. Затем я подумал, что могу создать фильтр AFTER, который возвращает ответ как json. Однако у меня нет способа узнать, была ли проверка подлинности успешной или нет.
Route::filter('auth.api.after', function($request, $response) {
die(var_dump($response));
});
Я хочу ответить json на отказ. Как я могу это сделать?
Рабочий код:
Route::filter('auth.api', function() {
Config::set('session.driver', 'array');
$response = Auth::onceBasic('username');
if (!is_null($response)) {
$failMessage = [
'status' => 'error',
'message' => 'Invalid Credentials'
];
$headers = ['WWW-Authenticate' => 'Basic'];
return Response::json($failMessage, 401, $headers);
}
});
Это близко, но без сигары. Я понимаю, что это так. Однако я хочу вернуть ответ JSON только при неудаче. Это либо вернет строку «неверные учетные данные», либо json-представление пользователя при успешном завершении. Я хочу ответить json на неудачу и ничего не добился –
Я отметил это как ответ, потому что он был ближе всего к тому, что я искал. Обновите мой рабочий код. –
Вы всегда должны возвращать ответ, даже если auth не терпит неудачу. См. Мой обновленный ответ. – Marwelln