Неожиданный сброс сеанса при выполнении запросов на ОТДЫХ аутентифицированного пользователя


  1. Я использую Drupal 7 и модуль сервисов

  2. Для создания конечных точек для входа в систему и последующей функциональности, доступной для вошедших в систему пользователей

  3. Как отмечалось здесь и здесь , идеальным рабочим процессом должно быть - Сделать запрос POST с именем пользователя и паролем> для конечной точки/пользователя/входа в систему (конечная точка уже включена) > возвращаемые данные содержат имя сеанса и идентификатор сеанса> вы соединяете их оба с "=" между ними, чтобы сформируйте файл cookie > вы отправляете этот файл cookie в последующих запросах в заголовке запроса > эти запросы автоматически обрабатываются как запросы аутентифицированных пользователей > Все хорошо

  4. Но в моем случае, когда я делаю последний шаг (отправляю файл cookie в заголовке запроса), происходит что-то странное. Значение uid, связанное с этим конкретным сеансом в таблице sessions, равно 0. (По сути, сеанс больше не является сеансом аутентифицированного пользователя, он также не уничтожается, он просто проходит анонимный)

Я действительно озадачен этим. Я повторил поведение на нескольких установках и надеюсь, что это просто случай, когда я упускаю что-то очевидное здесь.

Любая помощь была бы очень признательна? Заранее огромное спасибо.

Author: kiamlaluno, 2012-06-16

2 answers

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

Вышеуказанный сброс сеанса происходил из-за того, что моя конечная точка службы не была настроена для работы с "аутентифицированными сеансами". При создании новой конечной точки службы есть дополнительный флажок с надписью Аутентификация сеанса с описанием Choose which authentication schemes that should be used with your endpoint. If no authentication method is selected all requests will be done by an anonymous user., который необходимо проверить чтобы ресурсы веб-службы создавались в этой конечной точке и разрешали сеансы с проверкой подлинности.

Если вы не установите этот флажок во время создания конечной точки, вы можете сделать это и позже, отредактировав конкретную конечную точку и перейдя на вкладку РЕДАКТИРОВАТЬ.

 2
Author: Sumeet Pareek, 2012-06-18 18:53:28

Я столкнулся с той же проблемой, но я уже установил аутентификацию сеанса для службы (REST). Запрос работал нормально, когда мой сайт был установлен на root, например"www.domain.com "но не работал, когда сайт был установлен в каталоге по адресу"www.domain.com/my-directory /

Решение было модифицирующим/sites/default/files/settings.php, линия #271:

$base_url = 'www.domain.com/my-directory'; // NO trailing slash!

 2
Author: shackleton, 2012-10-02 14:14:03