Errore di route per /admin/users/1/log_out

Sto ricevendo questo errore quando provo a disconnettere un utente tramite l’endpoint di logout SSO, sia su Postman che sul sito.

I log di produzione indicano un errore di routing. Ho verificato due volte che il nome utente e la chiave API siano corretti. Riesco a far funzionare lo stesso codice nell’ambiente di sviluppo, ma non in produzione.

Ho provato a revocare e ricreare la chiave API diverse volte, senza successo. Ho provato sia a inserire i parametri nell’intestazione (header) che a inviarli come parametri di query.

Ecco l’output del log di produzione:

Started POST “/admin/users/2/log_out?api_username=dev&api_key=[FILTERED]” for 73.71.125.29 at 2020-05-26 01:37:17 +0000
ActionController::RoutingError (No route matches [POST] “/admin/users/2/log_out”)

È necessario fare qualcosa di particolare affinché la chiave API venga rilevata in produzione?

Devi impostare Api-Key e Api-Username negli header della richiesta. Dai un’occhiata all’esempio curl presente nella parte superiore di questo argomento: Documentazione API Discourse. Assicurati di usare un trattino (-) e non un trattino basso (_) per i nomi dei campi. Ad esempio, api-key funzionerà come nome del campo, mentre api_key non funzionerà.

Funziona, grazie.

Se qualcun altro sta riscontrando questo problema, ecco il comando curl necessario per i test:

curl -X POST "http://localhost:3000/admin/users/1/log_out" \
-H "Content-Type: multipart/form-data;" \
-H "Api-Key: [FILTERED]" \
-H "Api-Username: system"