2016-09-28 3 views
0

У меня есть api для экспорта некоторой информации в файл csv. API правильный, и он загружает мой файл, когда я обращаюсь к нему из браузера. Мне нужно получить доступ к этому API с терминала и загрузить файл, не заходя в браузер.Использование curl с электронной почтой и паролем

Мой маршрут для API выглядит следующим образом:

Route::get('/api/file/export', 'File\[email protected]', [ 
    'middleware'=>'auth.basic' 
]); 

Я попытался с помощью локон, как это:

curl --user email:password http://example.com/api/file/export 

Я пробовал разные команды завиток, но каждый из отображает редирект для входа HTML , Когда я использую команду -O для загрузки файла, он загружает файл с переадресацией на ссылку для входа.

curl --user email:password -O http://example.com/api/file/export 

Я правильно называю API? Как еще я могу получить доступ к API с терминала?

+0

Похоже, что вы используете базовую HTTP-аутентификацию, но то, что вы описываете как ошибку, похоже на типичное имя пользователя/пароль. Вы изменили промежуточное программное обеспечение 'auth.basic' от того, что по умолчанию используется в Laravel? –

+0

Нет Я не модифицировал файл 'auth.basic'. Какие изменения я должен внести? –

+0

Хм. Возможно, я ошибаюсь, но вы не должны видеть «login html», если используете HTTP-аутентификацию. Это должен быть 401 Несанкционированный ответ, вот и все. Несмотря на это, обычно вы должны использовать аутентификацию на основе токенов, когда вы создаете API, который нуждается в безопасности. [К счастью, у Laravel есть такие вещи, которые выпекались в (https://laravel.com/docs/5.3/passport) (хотя я знаю, что это требует переключения передач). –

ответ

0

Сначала вы должны войти на свой сайт. Вы можете попробовать это:
curl --user email:password http://domain.tld/login_page

И затем использовать куки для второго запроса:
curl --cookie http://domain.tld/file/to/export

Если это не работает, вам нужно сделать все представить действия с локон, то есть делает запрос POST с электронной почтой и паролем и т.д.

Кто-то дал good solution here

PS: Checkout, если вам не нужен маркер запроса ваш API тоже.

Смежные вопросы