Разработать сброс сеанса по внешнему URL-адресу POSTing - PullRequest
2 голосов
/ 25 марта 2012

Это интересная проблема, на самом деле, для всех, кого вы там разрабатываете Devise.

У нас есть настройка Devise с OmniAuth, но проблема возникает независимо от того, вошли ли вы через Facebook или вошли под обычным именем пользователя. Что происходит, у нас есть встроенная Flash-игра на нашем сайте. Когда вы закончите играть в игру, игра отправит ваш счет в бэкэнд Rails:

request = new URLRequest("http://mydomain.com:2012/games/1/leaderboards/13/submitLeaderboardStatistic");
request.method = URLRequestMethod.POST; 

var loader : URLLoader = new URLLoader();
loader.dataFormat = URLLoaderDataFormat.VARIABLES;
var variables : URLVariables = new URLVariables();
variables.game_value = aScore;
variables.game_id = 1;
variables.unique_identifier = "com.onecoolgameaday.highscores";
variables.time_stamp = new Date();

request.data = variables;  

loader.addEventListener(Event.COMPLETE, on_complete);
loader.addEventListener(IOErrorEvent.IO_ERROR, onIOError);
loader.load(request);

URL отправляется на наш URL. Контроллер (Leaderboards вложены в Games) получает информацию URL в методе submitLeaderboardStatistic. Этот метод имеет дело с информацией. В этом методе я вызываю current_user, чтобы получить текущего пользователя, который представил фактический счет. Проблема в том, что current_user возвращает ноль.

Очевидно, что происходит, когда игра запускает этот URL-запрос POST, разрабатывает недействительный сеанс (или что-то в этом роде), поэтому я не могу сказать, кто отправил счет.

Почему текущий вошедший в систему пользователь "вылетает" после того, как Flash Game отправляет URL? Как мне это исправить, чтобы я мог сказать «пользователь XXX отправил этот балл».

Спасибо!

Рельсы: 3.2.2
Рубин: 1.9.2
Придумайте: 1.5.3

Ответы [ 2 ]

1 голос
/ 18 апреля 2012

Имеет ли форма, которую вы отправляете, действительный токен CSRF? Я думаю, что Devise вызывает reset_session, если токен csrf недействителен или не существует.

0 голосов
/ 25 марта 2012

Попробуйте установить полный URL-адрес для "/ games / 1 / leaderboards / 13 / submitLeaderboardStatistic".Вероятно, причина кросс-domail-policy, которая должна быть получена с сервера, когда вы используете метод POST для другого домена.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...