Login fallito restituisce 200 Ok

Sto facendo una POST a /session.json con il payload

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

Quando il login riesce, lo stato è 200 e il JSON restituito è un insieme di dati utente. Quando il login fallisce, il JSON restituito appare come

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

ma lo stato è ancora 200. È un bug? Lo stato per un login fallito dovrebbe essere qualcosa \u003e= 400, per indicare un fallimento?

1 Mi Piace

:thinking:

Forse. Probabilmente opterei per 401.

Ma anche questi sono codici di stato HTTP, per connessioni client HTTP; penso che questa sfumatura porti a decisioni come restituire un 200 (“la tua POST ha avuto successo, ecco il feedback”).

Non sono sicuro, io stesso. :slight_smile:

1 Mi Piace
1 Mi Piace

Capisco la logica di un 200 per un login fallito, che significa che il tuo login è fallito con successo, invece di fallire senza successo. :upside_down_face:

4 Mi Piace

Tieni presente che questa è anche una specie di “funzionalità” in quanto confonde i bot che cercano di accedere.
Sono combattuto se cambiare questo. Forse…

6 Mi Piace

Non sto chiedendo un cambiamento. Quello che volevo era una disgiunzione: un cambiamento O la conferma che il comportamento è intenzionale—cosa che ora ho. Grazie!

3 Mi Piace