Échec de connexion renvoie 200 Ok

J’effectue une requête POST à /session.json avec la charge utile

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

Lorsque la connexion réussit, le statut est 200 et le JSON retourné contient des données utilisateur. Lorsque la connexion échoue, le JSON retourné ressemble à

{"error": "Incorrect username, email or password"}

mais le statut est toujours 200. Est-ce un bug ? Le statut pour une connexion échouée devrait-il être supérieur ou égal à 400, pour indiquer un échec ?

1 « J'aime »

:thinking:

Peut-être. Je choisirais plutôt 401.

Mais ce sont aussi des codes d’état HTTP, pour les connexions clients HTTP ; je pense que cette nuance conduit à des décisions comme retourner un 200 (« votre POST a réussi, voici le retour »).

Je ne suis pas sûr, moi-même. :slight_smile:

1 « J'aime »
1 « J'aime »

Je peux comprendre la logique d’un 200 pour une connexion échouée, ce qui signifie que votre connexion a échoué avec succès, au lieu d’échouer sans succès. :upside_down_face:

4 « J'aime »

Gardez à l’esprit que c’est aussi une sorte de « fonctionnalité » dans la mesure où elle perturbe les robots qui tentent de se connecter.

Je suis partagé quant à la modification de cela. Peut-être…

6 « J'aime »

Je ne demande pas de changement. Ce que je voulais, c’était une disjonction : un changement OU une confirmation que le comportement est intentionnel — ce que j’ai maintenant. Merci !

3 « J'aime »