Alguém tem um Login REST funcionando no Drupal 8?
Isto é o que eu tentei.
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
Ele me retorna HTML em vez de JSON .
Veja como você pode fazer login via JavaScript para o Drupal 8 REST:
Drupal 8.2 e além
http://example.com/user/login?_format=json
application/json
{ "name": "admin", "pass": "myPassword" }
200 OK
Isso fará o login corretamente via autenticação de cookie e retornará um resultado semelhante a este:
Criei um módulo contrib chamado jDrupal que facilita o login com JavaScript (entre outras coisas):
Antes do 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
Você enviará os dados junto no URL como uma string de consulta. O resultado será HTML, portanto, ele não retornará nada útil para você, mas fará o login adequado via autenticação de cookie.
fonte
Autenticação RESTful significa enviar autenticação com cada solicitação porque é sem estado. O exemplo fornecido pelo núcleo do Drupal 8 é o módulo Autenticação básica, que permite enviar credenciais de autenticação para uma solicitação HTTP via autenticação HTTP básica, concedendo a um usuário permissão para acessar o conteúdo via GET.
Exemplo RESTful
Ondulação:
curl -vvv -k -H "Authorization: Basic test:password" http://8.d8.local/node/1?_format=json
No entanto, isso geralmente não é bom o suficiente. Os simple_oauth e oauth módulos contrib fornecer suporte OAuth 2 e 1 respectivamente., Com o qual um pedido HTTP pode ser feita com a autenticação OAuth fichas com base no trabalho OAuth fluxos descrito nos módulos.
Mas a verdadeira questão parece ser
Como faço para entrar por meio de uma API de serviços da Web?
Não há um módulo Drupal 8 estável para fazer isso, mas os Serviços módulo fornece métodos para criar ações não RESTful e ações direcionadas, como "login".
O seguinte funciona após a configuração de um terminal chamado "api":
Ondulação:
curl -vvv -k -H "Content-Type: application/json" -H "Accept: application/json" -d '{"username": "test", "password": "password"}' http://8.d8.local/api/user/login
Isso retorna o ID e o nome da sessão JSON (também configurada no cabeçalho Set-Cookie da resposta).
e também você pode fazer login com a chamada Jquery ajax com o seguinte trecho
fonte
Versão do Drupal Core: 8.x-4.x
Você precisa habilitar o serviço de login do usuário, o que pode ser feito de várias maneiras. Prefiro usar o módulo REST UI .
Vá para / admin / config / services / rest e ative o recurso Restante do Usuário .
Uma vez ativado, você pode acessar / admin / config / services / rest / resource / entity% 3Auser / edit clicando em Editar ao lado do recurso Usuário . Certifique-se de ativar o método GET .
Agora que você tem tudo configurado, pode começar a usar o serviço executando este comando no terminal ou usando qualquer aplicativo para solicitações de curl, como: clientes Postman e Restlet .
NOTA : O token CSRF pode ser obtido em: / rest / session / token
Os objetos de retorno são os seguintes:
SUCESSO :
FALHA :
fonte
Eu uso o login RESTFul personalizado no drupal 8, mas não com o cookie. É para um aplicativo móvel e sempre que preciso de informações, uso um simples Autenticar:
Desde o Drupal 8.2x, precisamos de 2 arquivos em um módulo:
Você pode adicionar mais métodos como DELETE / POST
Então precisamos do arquivo
Não se esqueça de ir ao usuário certo para aceitar o método GET / POST ou qualquer outra coisa que você adicionou na sua configuração.
Com isso, você pode criar todos os arquivos REST customizados para cada entidade customizada.
E no meu js: não se esqueça de ligar
para obter token
fonte
Após a resposta de @ tyler.frankenstein, se você deseja implementar um formulário de login com o Ajax, pode, por exemplo, usar o jQuery.
1. Obtenha um token CSRF
Precisamos fazer uma solicitação POST para o
user/login
terminal da API do Drupal 8. Esse ponto de extremidade (considerado como "método não seguro") exige que você envie um token CSRF.A primeira etapa é obter esse token enviando uma solicitação AJAX para o
rest/session/token
terminal:NB:
callback
parâmetro é uma função de retorno de chamada que será chamada quando o token CSRF for buscadoDrupal.url
função para obter o URL base do siteEste token deve ser enviado com um
X-CSRF-Token
cabeçalho.2. Login
Considere o seguinte HTML:
... e o código jQuery correspondente:
Este código foi testado com sucesso com o Drupal 8.3.
Eu espero que isso te ajude!
fonte
Sim, claro, criei um blog sobre como testá-lo com o carteiro , e também outro sobre como configurar seu site drupal .
Neste projeto , fiz um login no Drupal com angular, usando o módulo Simple OAuth para o token.
fonte