Sto utilizzando SimpleMembership nel mio progetto .NET MVC4. Durante lo sviluppo, mentre manipolo/ricostruisco manualmente il database, mi sono imbattuto in un errore che sarebbe improbabile in produzione, ma voglio risolverlo e non riesco a trovare un modo elegante per gestirlo..NET MVC4 Errore SimpleMembership - "Non è stato trovato nessun utente che abbia il nome xxx"
Se, dopo aver effettuato l'accesso all'applicazione, il nome utente viene modificato nel database o il record utente completamente cancellato, l'utente non sarà più in grado di accedere a nessuna pagina dell'applicazione ... comprese le pagine pubbliche che consentono viste anonime e la schermata di accesso. Invece, viene lanciata un'eccezione: "Non è stato trovato nessun utente che abbia il nome 'nome utente'".
Tutte le pagine dell'applicazione visualizzano una vista parziale che esegue il rendering di un controllo di accesso/disconnessione. Request.IsAuthenticated restituisce true indipendentemente da cosa c'è nel database. Sembra che l'app ritenga che l'utente abbia ancora effettuato l'accesso in base alle informazioni contenute nel cookie, ma non è possibile trovare record corrispondenti nel database. Cancellare il cookie auth risolve questo problema, ma non è un'istruzione che vorrei fornire a un utente che potrebbe averlo riscontrato.
La mia soluzione attuale è quella di rilevare tale eccezione nel Global.asax, cancellare i cookie e reindirizzare alla pagina di accesso. Questo mi sembra completamente intrusivo.
Qualcuno ha trovato una soluzione migliore a questo scenario? Non ho mai riscontrato problemi come questo utilizzando il vecchio provider di appartenenza .NET ... la mia aspettativa è che questa situazione dovrebbe essere coperta immediatamente e non dovrei doverne fare conto ... se un record viene modificato/cancellato nel DB, l'utente dovrebbe fallire l'autorizzazione e essere reindirizzato automaticamente alla pagina di login.
Beh immagino ancora accadrebbe in produzione, tutto quello che intendevo era che probabilmente non sarebbe successo perché in una situazione di produzione non avrei cancellato manualmente i record nel database. Non si tratta di cambiare host. Non ho passato molto tempo a cercare di capire come superare questo problema, ma fondamentalmente ha a che fare con un cookie di autenticazione nel mio browser che fa riferimento a un utente che non esiste più nel database ... Vorrei solo che questo fosse gestito più elegantemente fuori dalla scatola. – Gadget27