Неожиданный сброс сеанса при выполнении запросов на ОТДЫХ аутентифицированного пользователя
Я использую Drupal 7 и модуль сервисов
Для создания конечных точек для входа в систему и последующей функциональности, доступной для вошедших в систему пользователей
Как отмечалось здесь и здесь , идеальным рабочим процессом должно быть - Сделать запрос POST с именем пользователя и паролем> для конечной точки/пользователя/входа в систему (конечная точка уже включена) > возвращаемые данные содержат имя сеанса и идентификатор сеанса> вы соединяете их оба с "=" между ними, чтобы сформируйте файл cookie > вы отправляете этот файл cookie в последующих запросах в заголовке запроса > эти запросы автоматически обрабатываются как запросы аутентифицированных пользователей > Все хорошо
Но в моем случае, когда я делаю последний шаг (отправляю файл cookie в заголовке запроса), происходит что-то странное. Значение
uid
, связанное с этим конкретным сеансом в таблицеsessions
, равно 0. (По сути, сеанс больше не является сеансом аутентифицированного пользователя, он также не уничтожается, он просто проходит анонимный)
Я действительно озадачен этим. Я повторил поведение на нескольких установках и надеюсь, что это просто случай, когда я упускаю что-то очевидное здесь.
Любая помощь была бы очень признательна? Заранее огромное спасибо.
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.
, который необходимо проверить чтобы ресурсы веб-службы создавались в этой конечной точке и разрешали сеансы с проверкой подлинности.
Если вы не установите этот флажок во время создания конечной точки, вы можете сделать это и позже, отредактировав конкретную конечную точку и перейдя на вкладку РЕДАКТИРОВАТЬ.
Я столкнулся с той же проблемой, но я уже установил аутентификацию сеанса для службы (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!