Ho un filtro azione personalizzato, che all'interno di OnActionExecuting
, in base a determinati criteri, disconnette un utente e li reindirizza alla home page del sito. Il codice (di nuovo messo a nudo) per la parte di reindirizzamento è al di sottoImpostazione di TempData all'interno di ActionFilterAttribute
filterContext.Controller.TempData.Add("key", "Message");
filterContext.Result = new RedirectResult("/");
Come sopra, sono anche l'impostazione di un messaggio TempData. Poiché l'utente è stato disconnesso, quando ha colpito la pagina iniziale, l'attributo [Authorize]
li reindirizzerà alla pagina di accesso GET. Nella vista di accesso, sto visualizzando tutti i messaggi dall'interno di tempData. Tuttavia in questa situazione il tempData è vuoto.
Questo è un comportamento molto simile a come funziona il mio POST di accesso (se non valido, reindirizza a casa, che reindirizza per accedere e visualizza il messaggio tempData impostato nel post di accesso). Questo codice può essere visto sotto
TempData.Add("key", errorMessage);
return Redirect("/"));
Il motivo che sto facendo in questo modo, invece di reindirizzare specificamente alla pagina di login è perché questo codice è distribuita su molti siti, in modo da non so cosa l'url di accesso GET è .
Qualcuno ha qualche informazione sul perché questo funziona per il POST di login ma non per il reindirizzamento di ActionFilter?
Edit:
Se rimuovo la chiamata di logout all'interno del filtro azione personalizzata, il TempData è ancora impostato all'interno dell'azione casa - tuttavia questo doesnt spiegare perché funziona per Login POST, ma non il filtro azione?
Questo è il comportamento che sto cercando: voglio che il client richieda un nuovo URL. Il motivo per cui TempData era vuoto era dovuto all'abbandono della sessione. – Rob