Ho appena iniziato a trafficare con OWIN/Katana e MVC.NET 5.0. Il Visual Studio 2013 ASP.NET Web Application/MVC template predefinito ha un AccountController con un'azione FantaOFootball():Perché AuthenticationManager.SignOut() non riesce quando cambio la risposta?
public ActionResult LogOff() {
AuthenticationManager.SignOut();
return RedirectToAction("Index", "Home");
}
Come previsto, questo funziona bene. Tuttavia, quando cambio il codice di stato della risposta, ad es. da:
Response.SetStatus(HttpStatusCode.SeeOther);
... Il metodo AuthenticationManager.SignOut() non causa più l'utente a diventare disconnesso. Perché?
Ho provato diversi approcci per l'impostazione del codice di stato HTTP per la risposta, oltre a modificare intestazioni HTTP come Posizione e sempre con lo stesso risultato: l'utente non viene disconnesso quando viene eseguita l'azione LogOff(), se Arrivo al temperamento con la risposta.
non provato ad utilizzare RedirectToAction (che implementa in modo esplicito un redirect 302 - questa è un'altra storia), e non restituire un ActionResult, ma che ha fatto alcuna differenza - non che mi piacerebbe davvero aspettavo che.
Utilizzo di Fiddler Posso dire che la risposta come sembra al browser sembra buona, senza sorprese.
Ho anche provato a cercare il codice sorgente del middleware OWIN al lavoro, ma l'architettura non mi è ancora familiare, e non ho trovato risposte che potessi cogliere lì dentro. Ho bisogno del tuo aiuto per risolvere questo problema, quindi grazie in anticipo!
Quando la risposta ritorna al client in fiddler, si vede il Set-Cookie per rimuovere la vecchia c ookie? –
No. Accetto che questo sia il motivo tecnico per cui l'utente è ancora considerato come connesso. Quello che non capisco è perché la chiamata a SignOut() non dovrebbe dare lo stesso risultato a prescindere se cambio il codice di stato o meno, rimuovendo il cookie e tutto. Potrei rimuovere il cookie da solo, o se volevo un comportamento diverso tutti insieme potrei anche implementare il mio middleware OWIN, ma non lo faccio. Voglio solo un altro codice di stato, che forse è in contraddizione con il comportamento implementato con RedirectToAction, ma perché dovrebbe interessare AuthenticationManager? Sono tornato indietro in questo? –
Dopo la richiesta successiva, l'utente si è disconnesso? –