Как мы можем использовать IE и XDomainRequests при поддержке сеанса drupal? - PullRequest
0 голосов
/ 17 февраля 2012

IE9 XDomainRequest не отправляет аутентификацию или куки (# 5 в http://blogs.msdn.com/b/ieinternals/archive/2 010/05/13 / XDomainRequest-ограничений-limitat Ионы-и-workarounds.aspx).

Нам нужно сделать все запросы данных в контексте аутентифицированного / сеанса.

Одна общая идея заключается в том, чтобы явно добавить токен сеанса в запрос XDomainRequest, а затем в бэкэнде использовать sess_read () drupal для получения сеанса. Однако API не рекомендует напрямую вызывать sess_read (), цитируя различные нежелательные побочные эффекты (http://api.drupal.org/api/drupal/includes%21s ession.inc/6).

Кто-нибудь успешно использует это или нашел другой обходной путь?

1 Ответ

0 голосов
/ 18 февраля 2012

похоже, это решение:

если контекст сеанса потерян (из-за анонимного запроса, который содержит только ваш $ sessionKey), тогда мы можем получить идентификатор сеанса пользователя / идентификатор пользователя с помощью этого:

$userFetched = db_fetch_object(db_query("SELECT u.*, s.* FROM {users} u INNER JOIN {sessions} s ON u.uid = s.uid WHERE s.sid = '%s'", $sessionKey));

//assuming sessionKey was valid, then $userFetched->uid will contain the user's id.
...