У кого-нибудь есть рабочий REST Login на Drupal 8?
Это то, что я пытался.
POST /user/login HTTP/1.1
Host: 8.d8.local
Content-Type: application/x-www-form-urlencoded
Accept-Encoding: http://nikhilmohan.in
Cache-Control: no-cache
name=test&pass=password&form_id=user_login_form
Он возвращает мне HTML вместо JSON .
Вот как вы можете войти через JavaScript для Drupal 8 REST:
Drupal 8.2 и выше
http://example.com/user/login?_format=json
application/json
{ "name": "admin", "pass": "myPassword" }
200 OK
Это будет правильно войти через аутентификацию cookie и вернуть результат, подобный следующему:
Я создал модуль contrib под названием jDrupal, который упрощает вход в систему с помощью JavaScript (среди прочего):
До Drupal 8.2
http://example.com/user/login
application/x-www-form-urlencoded
name=admin&pass=myPassword&form_id=user_login_form
200 OK | 303 See Other
Вы отправите данные вместе в URL в виде строки запроса. Результатом будет HTML, поэтому он не вернет ничего полезного для вас, но будет правильно входить в систему с помощью cookie-аутентификации.
источник
RESTful-аутентификация означает отправку аутентификации с каждым запросом, потому что он не имеет состояния. Примером, предоставленным ядром Drupal 8, является модуль Basic Auth, который позволяет отправлять учетные данные аутентификации для HTTP-запроса через Basic HTTP-аутентификацию, предоставленные пользователю с разрешением на доступ к Контенту через GET.
RESTful Пример
Скручивание:
curl -vvv -k -H "Authorization: Basic test:password" http://8.d8.local/node/1?_format=json
Однако обычно этого недостаточно. В simple_oauth и OAuth модулей CONTRIB обеспечивают поддержку OAuth 2 и 1 соответственно., С помощью которого запрос HTTP , может быть сделан с помощью проверки подлинности OAuth маркеры на основе OAuth работы потоков , описанные в этих модулях.
Но реальный вопрос, кажется,
Как мне войти через API веб-сервисов?
Для этого не существует стабильного модуля Drupal 8, но модуль Services предоставляет методы для создания не-RESTful-действий и целевых действий, таких как «вход в систему».
Следующее работает после настройки конечной точки с именем «api»:
Скручивание:
curl -vvv -k -H "Content-Type: application/json" -H "Accept: application/json" -d '{"username": "test", "password": "password"}' http://8.d8.local/api/user/login
Это возвращает идентификатор и имя сеанса JSON (также устанавливается в заголовке Set-Cookie ответа).
а также вы можете войти с помощью jquery ajax call со следующим фрагментом
источник
Версия Drupal Core: 8.x-4.x
Прежде всего, вам нужно включить службу входа в систему, это может быть достигнуто многими способами, я предпочитаю использовать модуль REST UI .
Перейдите в / admin / config / services / rest и включите ресурс User Rest.
После его включения вы можете перейти в / admin / config / services / rest / resource / entity% 3Auser / edit , нажав на Edit рядом с ресурсом User . Обязательно включите метод GET .
Теперь у вас есть все настройки, вы можете начать использовать сервис, запустив эту команду в терминале или используя любое приложение для запросов скручивания, например: Почтальон и Рестлет клиенты.
ПРИМЕЧАНИЕ : токен CSRF можно получить из: / rest / session / token
Возвращаемые объекты как ниже:
УСПЕХ :
ОТКАЗ :
источник
Я использую пользовательский логин RESTFul на drupal 8, но не с cookie. Это для мобильного приложения, и каждый раз, когда мне нужна информация, я использую простую аутентификацию:
Начиная с Drupal 8.2x нам нужно 2 файла в модуле:
Вы можете добавить больше метода, как DELETE / POST
Тогда нам нужен файл
Не забудьте перейти к праву пользователя для метода accept GET / POST или всего, что вы добавили в свою конфигурацию.
При этом вы можете создать каждый пользовательский файл REST для каждого пользовательского объекта.
И в моем JS: не забудьте позвонить
для получения токена
источник
Следуя ответу @ tyler.frankenstein, если вы хотите реализовать форму входа в Ajax, вы можете, например, использовать jQuery.
1. Получить токен CSRF
Нам нужно сделать POST-запрос к
user/login
конечной точке API Drupal 8. Эта конечная точка (рассматриваемая как «небезопасный метод») требует отправки токена CSRF.Первый шаг - получить этот токен, отправив запрос AJAX
rest/session/token
конечной точке:NB:
callback
Параметр представляет собой функцию обратного вызова , которая будет вызываться , когда маркер CSRF будет извлекаетсяDrupal.url
функцию, чтобы получить базовый URL сайтаЭтот токен должен быть отправлен с
X-CSRF-Token
заголовком.2. Войти
Рассмотрим следующий HTML:
... и соответствующий код jQuery:
Этот код был успешно протестирован с Drupal 8.3.
Я надеюсь, что это поможет вам!
источник
Да, конечно, я сделал блог о том, как протестировать его с почтальоном , а также о том, как настроить ваш сайт на друпале .
В этом проекте я сделал логин для Drupal с angular, используя модуль Simple OAuth для токена.
источник