Falha no login retorna 200 Ok

Estou fazendo um POST para /session.json com a carga útil

{
  "login": "skroob",
  "password": "12345",
  "authenticity_token": "..."
}

Quando o login é bem-sucedido, o status é 200 e o JSON retornado é um monte de dados do usuário. Quando o login falha, o JSON retornado se parece com

{"error": "Nome de usuário, e-mail ou senha incorretos"}

mas o status ainda é 200. Isso é um bug? O status para um login falho deveria ser algo >= 400, para indicar uma falha?

1 curtida

:thinking:

Talvez. Eu provavelmente escolheria 401.

Mas esses também são códigos de status HTTP, para conexões de cliente HTTP; acho que essa nuance leva a decisões como retornar um 200 (“seu POST foi bem-sucedido, aqui está o feedback”).

Não tenho certeza, eu mesmo. :slight_smile:

1 curtida
1 curtida

Consigo ver a lógica de um 200 em um login falho, significando que seu login falhou com sucesso, em vez de falhar sem sucesso. :upside_down_face:

4 curtidas

Lembre-se de que isso também é um pouco um “recurso” no sentido de que confunde os bots que estão tentando fazer login.

Estou indeciso sobre mudar isso. Talvez…

6 curtidas

Não estou pedindo uma mudança. O que eu queria era uma disjunção: uma mudança OU confirmação de que o comportamento é intencional — o que agora tenho. Obrigado!

3 curtidas