Czy ktoś ma działające logowanie REST na Drupal 8?
Właśnie tego próbowałem.
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
Zwraca mi HTML zamiast JSON .
Oto jak możesz zalogować się przez JavaScript dla Drupal 8 REST:
Drupal 8.2 i nowsze
http://example.com/user/login?_format=json
application/json
{ "name": "admin", "pass": "myPassword" }
200 OK
Spowoduje to prawidłowe logowanie za pomocą uwierzytelniania plików cookie i zwróci wynik podobny do tego:
Stworzyłem moduł contrib o nazwie jDrupal, który bardzo ułatwia logowanie za pomocą JavaScript (między innymi):
Przed Drupalem 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
Prześlesz dane wraz z adresem URL jako ciąg zapytania. Rezultatem będzie HTML, więc nie zwróci ci niczego przydatnego, ale poprawnie zaloguje się za pomocą uwierzytelnienia cookie.
źródło
Uwierzytelnianie RESTful oznacza wysyłanie uwierzytelnienia przy każdym żądaniu, ponieważ jest ono bezstanowe. Przykładem dostarczonym przez rdzeń Drupal 8 jest moduł Basic Auth, który umożliwia wysyłanie poświadczeń uwierzytelnienia dla żądania HTTP za pośrednictwem podstawowego uwierzytelniania HTTP, pod warunkiem, że użytkownik ma uprawnienia dostępu do treści za pośrednictwem GET.
RESTful Przykład
Kędzior:
curl -vvv -k -H "Authorization: Basic test:password" http://8.d8.local/node/1?_format=json
Jednak zwykle nie jest to wystarczająco dobre. W simple_oauth i oauth moduły contrib zapewnić OAuth 2 i 1, odpowiednio, wsparcie., Przy którym żądanie HTTP może być wykonana z uwierzytelniania OAuth żetony na podstawie prac OAuth pieniężnych opisane w tych modułów.
Ale prawdziwe pytanie wydaje się być
Jak zalogować się przez interfejs API usług internetowych?
Nie ma do tego stabilnego modułu Drupal 8, ale moduł Usługi zapewnia metody tworzenia akcji innych niż RESTful oraz akcji ukierunkowanych, takich jak „logowanie”.
Następujące czynności działają po skonfigurowaniu punktu końcowego o nazwie „api”:
Kędzior:
curl -vvv -k -H "Content-Type: application/json" -H "Accept: application/json" -d '{"username": "test", "password": "password"}' http://8.d8.local/api/user/login
Zwraca identyfikator i nazwę sesji JSON (również ustawione w nagłówku Set-Cookie odpowiedzi).
a także możesz zalogować się za pomocą wywołania Jquery ajax za pomocą następującego fragmentu kodu
źródło
Wersja Drupal Core: 8.x-4.x
Najpierw musisz włączyć usługę logowania użytkownika, można to zrobić na wiele sposobów, wolę używać modułu interfejsu użytkownika REST .
Przejdź do / admin / config / services / rest i włącz zasób User Rest.
Po włączeniu możesz przejść do / admin / config / services / rest / resource / entity% 3Auser / edit , klikając Edytuj obok zasobu użytkownika . Pamiętaj, aby włączyć metodę GET .
Teraz, gdy masz już wszystko skonfigurowane, możesz zacząć korzystać z usługi, uruchamiając to polecenie w terminalu lub używając dowolnej aplikacji do wysyłania żądań curl, takich jak: klienci Postman i Restlet .
UWAGA : Token CSRF można uzyskać z: / rest / session / token
Obiekty zwracane są jak poniżej:
SUKCES :
AWARIA :
źródło
Używam niestandardowego logowania RESTFul na drupal 8, ale nie z cookie. Jest to aplikacja mobilna i za każdym razem, gdy potrzebuję informacji, używam prostego uwierzytelnienia:
Od Drupala 8.2x potrzebujemy 2 plików w module:
Możesz dodać więcej metod, takich jak DELETE / POST
Następnie potrzebujemy pliku
Nie zapomnij przejść do prawa użytkownika, aby zaakceptować metodę GET / POST lub cokolwiek, co dodałeś do swojej konfiguracji.
Dzięki temu możesz utworzyć każdy niestandardowy plik REST dla każdego niestandardowego elementu.
I w moim js: Nie zapomnij zadzwonić
po token
źródło
Po odpowiedzi na @ tyler.frankenstein, jeśli chcesz wdrożyć formularz logowania w Ajax, możesz na przykład użyć jQuery.
1. Zdobądź token CSRF
Musimy złożyć żądanie POST do
user/login
punktu końcowego interfejsu API Drupal 8. Ten punkt końcowy (uważany za „niebezpieczną metodę”) wymaga wysłania tokenu CSRF.Pierwszym krokiem jest zdobycie tego tokena, wysyłając żądanie AJAX do
rest/session/token
punktu końcowego:NB:
callback
parametr jest funkcją wywołania zwrotnego, która zostanie wywołana, gdy token CSRF zostanie pobranyDrupal.url
funkcji, aby uzyskać podstawowy adres URL witrynyTen token należy wysłać z
X-CSRF-Token
nagłówkiem.2. Zaloguj się
Rozważ następujący kod HTML:
... i odpowiedni kod jQuery:
Ten kod został pomyślnie przetestowany w Drupal 8.3.
Mam nadzieję, że to Ci pomoże!
źródło
Tak, oczywiście, stworzyłem blog o tym, jak przetestować go z listonoszem , a także kolejny blog o tym , jak skonfigurować swoją witrynę drupal .
W tym projekcie zalogowałem się do Drupala za pomocą angulara, używając prostego modułu OAuth dla tokena.
źródło