Quelqu'un a-t-il une connexion REST fonctionnelle sur Drupal 8?
Voilà ce que j'ai essayé.
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
Il me renvoie HTML au lieu de JSON .
Voici comment vous pouvez vous connecter via JavaScript pour Drupal 8 REST:
Drupal 8.2 et au-delà
http://example.com/user/login?_format=json
application/json
{ "name": "admin", "pass": "myPassword" }
200 OK
Cela se connectera correctement via l'authentification par cookie et retournera un résultat similaire à celui-ci:
J'ai créé un module contrib appelé jDrupal qui facilite la connexion avec JavaScript (entre autres):
Avant 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
Vous enverrez les données dans l'URL sous forme de chaîne de requête. Le résultat sera HTML, donc il ne vous renverra rien d'utile, mais il se connectera correctement via l'authentification par cookie.
la source
L'authentification RESTful signifie d'envoyer une authentification à chaque demande car elle est sans état. L'exemple fourni par Drupal 8 core est le module Basic Auth, qui permet d'envoyer des informations d'authentification pour une demande HTTP via l'authentification HTTP de base à un utilisateur autorisé à accéder au contenu via GET.
Exemple RESTful
Boucle:
curl -vvv -k -H "Authorization: Basic test:password" http://8.d8.local/node/1?_format=json
Cependant, ce n'est généralement pas suffisant. Les modules contrib simple_oauth et oauth fournissent respectivement la prise en charge OAuth 2 et 1, avec lesquels une requête HTTP peut être effectuée avec des jetons d'authentification OAuth basés sur les flux de travail OAuth décrits dans ces modules.
Mais la vraie question semble être
Comment me connecter via une API de services Web?
Il n'y a pas de module Drupal 8 stable pour le faire, mais le module Services fournit des méthodes pour créer des actions non RESTful et des actions ciblées telles que "connexion".
Ce qui suit fonctionne après avoir configuré un point de terminaison appelé "api":
Boucle:
curl -vvv -k -H "Content-Type: application/json" -H "Accept: application/json" -d '{"username": "test", "password": "password"}' http://8.d8.local/api/user/login
Cela renvoie l'ID et le nom de la session JSON (également définis dans l'en-tête Set-Cookie de la réponse).
et vous pouvez également vous connecter avec l'appel ajax Jquery avec l'extrait suivant
la source
Drupal Core Version: 8.x-4.x
Vous devez d'abord activer le service de connexion utilisateur, cela peut être accompli de nombreuses façons, je préfère utiliser le module d' interface utilisateur REST .
Accédez à / admin / config / services / rest et activez la ressource User Rest.
Une fois activé, vous pouvez accéder à / admin / config / services / rest / resource / entity% 3Auser / edit en cliquant sur Modifier à côté de la ressource utilisateur . Assurez-vous d'activer la méthode GET .
Maintenant que vous avez tout configuré, vous pouvez commencer à utiliser le service en exécutant cette commande dans le terminal ou en utilisant n'importe quelle application pour les requêtes curl comme: Postman et Restlet clients.
REMARQUE : le jeton CSRF peut être obtenu à partir de: / rest / session / token
Les objets de retour sont les suivants:
SUCCÈS :
ÉCHEC :
la source
J'utilise une connexion RESTFul personnalisée sur drupal 8 mais pas avec un cookie. C'est pour une application mobile et chaque fois que j'ai besoin d'informations, j'utilise une simple authentification:
Depuis Drupal 8.2x, nous avons besoin de 2 fichiers dans un module:
Vous pouvez ajouter plus de méthode comme DELETE / POST
Ensuite, nous avons besoin du fichier
N'oubliez pas d'aller au droit d'utilisateur pour accepter la méthode GET / POST ou tout ce que vous avez ajouté dans votre configuration.
Avec cela, vous pouvez créer chaque fichier REST personnalisé pour chaque entité personnalisée.
Et dans mon js: N'oubliez pas d'appeler
pour obtenir un jeton
la source
Suite à la réponse de @ tyler.frankenstein, si vous souhaitez mettre en place un formulaire de connexion avec Ajax, vous pouvez par exemple utiliser jQuery.
1. Obtenez un jeton CSRF
Nous devons faire une requête POST au
user/login
point de terminaison de l'API Drupal 8. Ce point de terminaison (considéré comme une "méthode non sûre") nécessite que vous envoyiez un jeton CSRF.La première étape consiste à obtenir ce jeton en envoyant une demande AJAX au
rest/session/token
point de terminaison:NB:
callback
paramètre est une fonction de rappel qui sera appelée lorsque le jeton CSRF sera récupéréDrupal.url
fonction pour obtenir l'URL de base du siteCe jeton doit être envoyé avec un en-
X-CSRF-Token
tête.2. Connexion
Considérez le code HTML suivant:
... et le code jQuery correspondant:
Ce code a été testé avec succès avec Drupal 8.3.
J'espère que cela t'aidera!
la source
Oui, bien sûr, j'ai fait un blog sur la façon de le tester avec postman , et aussi un autre sur la façon de configurer votre site drupal .
Dans ce projet, j'ai fait une connexion pour Drupal avec angular, en utilisant le module Simple OAuth pour le jeton.
la source