5

Ho un problema strano che si verifica con RC2.ASP.NET Core Identity 3 Timeout dei cookie

Ho installato Identity 3 ExpireTimeSpan a 12 ore utilizzando la seguente opzione di configurazione

options.Cookies.ApplicationCookie.ExpireTimeSpan = new TimeSpan(12,0,0); 

Dopo l'accesso al sito web e lasciando intatto per ~ 35-40mins, ricevo un errore 401 (per il mio Ajax postare le chiamate) e aggiornare il sito Web, torno alla pagina di accesso.

Perché devo riautenticare quando ho impostato ExpireTimeSpan su 12 ore?

Esiste un'altra impostazione o configurazione di cui ho bisogno?

Inoltre,

Come posso ottenere il tempo rimanente prima che si verifichi la scadenza? Vorrei accedere a tali informazioni in modo da poter avvisare i miei utenti che la loro sessione scadrà dopo X volta.

Grazie!

risposta

5

Ho trovato il problema

Il problema risiede con il meccanismo SecurityStamp. Per impostazione predefinita, ogni 30 minuti, il timbro di sicurezza viene convalidato. Questo principalmente a causa del fatto che l'accesso ovunque è un'opzione. Il timbro di sicurezza viene aggiornato di solito in identità quando l'utente cambia password, per esempio. In questo modo tutte le posizioni in cui l'utente ha effettuato l'accesso (tranne quella in cui ha cambiato la password) si disconnettono dopo 30 minuti perché il timbro (di solito un guid) è cambiato.

Per implementare questa funzionalità, implementare l'interfaccia ISecurityStampStore<T> nel vostro UserStore e implementare il metodo

GetSecurityStampAsync(User user, CancellationToken cancellationToken) Per maggiori informazioni è possibile controllare il codice validatore timbro di sicurezza e il motivo per cui si sottoscrive fuori dopo 30 minuti

https://github.com/aspnet/Identity/blob/dev/src/Microsoft.AspNetCore.Identity/SecurityStampValidator.cs

Nota: Le opzioni.SecurityStampValidationInterval può essere impostato per aumentare il controllo del tempo, ma non risolve il problema. Dopo X volta, sarai comunque disconnesso.

+0

Quindi non c'è una scadenza a rotazione o qualcosa del genere? Questo fa schifo! Penso che sia anche quello di cui ho bisogno. Il mio cookie sta scadendo a 30 minuti, anche se la mia sessione continua a essere convalidata ... – ganders

+0

Puoi pubblicare il tuo codice così com'è nel tuo progetto. Non riesco ancora a far funzionare la mia anche incorporando le modifiche che hai menzionato. File Startup.cs, ecc. – ganders

+0

Stai utilizzando un DB come back-end? Active Directory? Tutto dipende dal tuo ambiente! Se riesci a fare un violinista o qualcosa in cui possiamo vedere il codice, sarebbe utile! – DOMZE