#laravel #laravel-5.3
#laravel #laravel-5.3
Вопрос:
Для нашего Laravel 5.3 API я хочу устранить необходимость в токенах CSRF, поскольку все обрабатывается с помощью OAuth2 и JWT.
В настоящее время API работает на поддомене: api.example.com
Я пробовал это, но он по-прежнему запрашивает токены CSRF:
class VerifyCsrfToken extends BaseVerifier
{
protected $except = [
'api.*'
];
}
Я также хотел бы иметь возможность отключить защиту CSRF, когда я выполняю случайные тесты маршрута в основном приложении, которое включено app.example.dev
, но добавление 'app.*'
$except
также не работает.
Возможно ли это сделать?
Ответ №1:
Вы можете перезаписать shouldPassThrough
метод в BaseVerifier
классе, где-в нем будет поддерживаться поддомен, $except
например api.yourdomain.com
/**
* Determine if the request has a URI that should pass through CSRF verification.
*
* @param IlluminateHttpRequest $request
* @return bool
*/
protected function shouldPassThrough($request)
{
foreach ($this->except as $except) {
if (Str::is($except, $request->url())) {
// break out of CSRF check
return true;
}
}
return false;
}
Комментарии:
1. Разве
return false
часть не должна находиться вне цикла foreach?