У меня есть приложение для Symfony2, у которого есть механизм входа.Symfony2 Аутентификация через HTTP-заголовки
Однако мне нужно каким-то образом отправить запрос из другого приложения, который проверяет, существует ли запрошенный URL в этой системе:
Например, есть запрос http://myapp/order/1111, что мне нужно проверить, возвращает ли он 200 OK заголовка или 404 Not Found статуса ;
Когда я отправляю запрос, он несанкционирован, и его перенаправляют на страницу входа/логин, которая возвращает заголовок состояния 200 OK.
Что мне нужно, так или иначе безопасно обходить логин. Есть ли способ, чтобы я мог добавить учетные данные для запроса или создать дополнительный метод входа?
EDIT:
Как было предложено в комментариях, я пытался использовать завиток. Но я не могу понять, как это работает. Вот что я получил, но это не работает.
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'http://localhost/en/login');
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.6) Gecko/20070725 Firefox/2.0.0.6');
curl_setopt($ch, CURLOPT_TIMEOUT, 60);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_COOKIESESSION, true);
curl_setopt($ch, CURLOPT_COOKIEJAR, 'cookie.txt');
curl_setopt($ch, CURLOPT_COOKIEFILE, 'cookie.txt');
curl_setopt($ch, CURLOPT_POST, true);
$html = new DOMDocument();
$html->loadHTML(curl_exec($ch));
if (curl_error($ch)) {
echo(curl_error($ch));
}
$csrf_token = $html->getElementById('csrf_token')->getAttribute('value');
curl_setopt($ch, CURLOPT_URL, 'http://localhost/en/login');
//curl_setopt($ch, CURLOPT_REFERER, 'http://localhost/en/login');
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query(array(
'_username' => 'login_username',
'_password' => 'login_password',
'_remember_me' => 'on',
'_csrf_token' => $csrf_token
)));
curl_setopt($ch, CURLOPT_POST, true);
$result = curl_exec($ch);
if (curl_error($ch)) {
echo(curl_error($ch));
}
echo $result;
curl_close($ch);
Любые предложения, как работать с завитком на этом случае?
Не лучше ли получить другое ваше приложение разрешено перед проверкой URL? – smarber
Я согласен с @smarber. Кстати, если вы хотите, чтобы что-то простое делалось, как описано в следующем примере: http://php-and-symfony.matthiasnoback.nl/2012/07/symfony2-security-using-advanced-request-matchers-to -activate-брандмауэров /. Вы можете просто активировать брандмауэр только в том случае, если в запросе нет настраиваемого заголовка, который вы можете просто добавить на свой сервер. Недостатком является безопасность, но это зависит от приложения тура – erlangb
Я не знаю, как мне разрешить другое приложение? –