Обработка файлов cookie с помощью Flex для аутентификации - PullRequest
1 голос
/ 10 марта 2010

Я использую Flex 4 (бета2) с Ruby on Rails 2.3.5 и использую RubyAMF для передачи данных между Flex и сервером и обратно.

Я установил Authlogic на стороне Rails для аутентификации.

Я не был уверен, что это лучший метод для обработки пользовательских сессий. Я знаю, что это делается автоматически с помощью Rails путем отправки идентификатора сеанса с cookie, который Rails использует для аутентификации пользователя.

Что вы предлагаете наилучшим образом сделать с помощью Flex?

Я подумал о паре вариантов:
1. Вручную загрузить куки из браузера и затем выяснить, как мы можем отправить его на сервер при каждом отправленном мной запросе.
2. Обработка истечения сеансов и потока на стороне Flex путем ручного истечения сеанса

У вас есть другие предложения или рекомендации?

Спасибо

Tam

Ответы [ 4 ]

2 голосов
/ 10 марта 2010

Сетевые запросы во Flash используют сетевой стек браузера, поэтому файлы cookie во Flex работают так же, как и любое другое приложение браузера. Обычно аутентификация в Flex ничем не отличается от стандартной веб-программы. Отправьте учетные данные на сервер, который соотносится с идентификатором сеанса. Каждый последующий запрос (RemoteObject, HTTPService и т. Д.) Также отправляет идентификатор сеанса.

1 голос
/ 10 марта 2010

В прошлом мы работали с BlaseDS и HTTPServices. В обоих случаях запрос отправляется на сервер по HTTP. Наш серверный стек как Java (точнее JBoss).

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

В одном случае мы передали токен клиенту. Это было сделано для того, чтобы избежать многократных отправок для одних и тех же запросов - поэтому мы использовали общий подход к отправке HTML-кода при генерации токенов, когда каждый ответ несет с собой новый токен, и клиент должен отправить его обратно на сервер для выполнения следующего запроса.

В случае истечения срока действия сеанса существует высокая вероятность того, что пользователь работает на клиенте для любых локальных нужд и не работает с сервером, что могло привести к истечению срока на сервере без воздействия на сервер. В этом случае мы отключили истечение срока сеанса на сервере и написали собственный код для обработки событий - клавиатуру и мышь на гибком клиенте. Если приложение не использовалось в течение указанного времени, у клиента Flex истекает время сеансов, т. Е. Локальных и серверных

1 голос
/ 10 марта 2010

Какой лучший способ сделать это с помощью Flex?

$loggedIn=Authenticate::isAuthenticated();
if(!$loggedIn)return false;
$user=Authenticate::getAuthUser();

Сначала выполните аутентификацию пользователя и, если он вошел в систему, создайте сеанс. Включите это в каждый файл PHP или Ruby и проверьте его. Отправьте идентификатор сеанса во Flex, чтобы сохранить состояние, и вы установите время истечения сеанса.

Приведенный выше код проверяет, аутентифицирован ли пользователь для доступа к файлам классов PHP или ruby.

1 голос
/ 10 марта 2010

Мы видели, что подключаемый модуль флэш-памяти распространяет куки-файл сессии, когда мы выполняем удаленные вызовы blazeDS (http)

...