2015-05-17 2 views
2

Я создаю приложение Rails, и я использую Devise для аутентификации. Когда пользователь вошел в систему Мне нужно сделать вызов AJAX для Rails и получить данные, принадлежащие текущему пользователю, как JSON. Также я не хочу, чтобы пользователи, не прошедшие проверку подлинности, и другие зарегистрированные пользователи имели доступ к ресурсам текущего пользователя.Аутентифицированный пользователь, делающий запросы AJAX для API rails из jQuery

Я использую JQuery в $ .getJSON(), чтобы сделать запрос AJAX, просто указав адрес ссылки, как это:

$.getJSON('http://localhost:3000/users/1/photos', function(data) { console.log(data); }); 

До сих пор authetication, кажется, работает таким же образом, он работал для HTTP поэтому пользователь может получить доступ только к своим собственным данным через AJAX.

У меня нет слишком большого опыта работы с AJAX, и я не понимаю, почему это делает вообще. Откуда мое приложение-рельс знает, что я вошел в систему, когда я делаю вызов AJAX? Я думал, что мне нужно создать дополнительный токен аутентификации и использовать его для аутентификации или установить cookie сеанса разработки при выполнении вызова AJAX.

Позже Редактировать: откуда мое приложение-рельс знает, что я вошел в систему, когда я делаю вызов AJAX?

+0

Запрос ajax также является HTTP-запросом, и сервер не обязательно будет знать или заботиться о том, является ли запрос ajax или нет. – Musa

ответ

1

Запрос AJAX (XMLHttpRequest) будет содержать те же заголовки при стандартном HTTP-запросе для того же домена. Что касается чтения файла cookie из заголовка, поиска информации сеанса и авторизации запроса, то поведение будет таким же.

+0

Так что в основном запрос AJAX отправляет cookie тоже, и именно по этой причине он работает. Это круто. Я думал, что нет. – user3790827

+0

Теперь я задаюсь вопросом, есть ли какие-либо другие проблемы с безопасностью в этом вопросе. Нужно ли мне отправлять токен CSRF или что-то еще с запросом? – user3790827

+0

Нет заметной разницы между двумя типами запросов с точки зрения безопасности, если они находятся в одном домене. – aceofspades

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