Come posso reindirizzare a una pagina MVC ASP.NET con sessione estesa?

0

Scenario

Abbiamo un'applicazione con timeout di sessione di 20 minuti. Tuttavia, è necessario che gli utenti debbano poter accedere a una determinata pagina del sito per 8 ore dopo la creazione della sessione originale (20 minuti). La pagina in questione deve utilizzare l'ID di sessione della sessione originale per estrarre dal database le variabili di sessione salvate che può utilizzare per eseguire più funzioni

Idee potenziali

  1. Memorizzare l'ID di sessione in un cookie che ha una scadenza di 8 ore dopo la creazione della sessione originale e utilizzarlo per estrarre i dati dal database - Ho deciso contro questo dato che non si consiglia di memorizzare ID di sessione nei cookie come qualcuno potrebbe intercettarlo.
  2. Archivia l'ID di sessione nella cache - lo stesso problema di cui sopra
  3. Crea una nuova applicazione MVC per la pagina con una sessione di 8 ore in IIS e quando l'utente preme il link per accedere alla pagina, si collegherà alla nuova applicazione e creerà una nuova sessione separata che durerà 8 ore - Questa è la soluzione corrente utilizzata dall'applicazione classica ASP precedente. Sono riluttante a utilizzare questo percorso perché ritengo che sia molto dispendioso e dispendioso in termini di tempo e molto più difficile da fare in MVC rispetto all'AS classico

Qualcuno ha qualche idea su come soddisfare questo requisito, in sicurezza?

    
posta Andrew 29.05.2018 - 19:53
fonte

2 risposte

1

Mi occupo di un problema simile in un'app (stato di accesso super lungo) e lo risolvo memorizzando un GUID in un cookie sul client (tramite cookie HttpOnly) che è legato a un singolo record di evento di accesso sul server.

Tecnicamente, se qualcuno avesse accesso fisico a una macchina connessa, poteva vedere il cookie e copiare il valore GUID da utilizzare altrove, ma se lo facessero, avrebbero già accesso alla macchina connessa, quindi è inutile preoccuparsi circa in ogni caso.

    
risposta data 29.05.2018 - 21:12
fonte
1

Potresti aumentare il timeout della sessione a 8 ore per tutte le pagine. Quindi puoi semplicemente eseguire il tuo "soft-expire" quando qualcuno accede a una pagina dopo 21 minuti in cui la sessione dovrebbe essere scaduta.

Questa logica di scadenza morbida potrebbe essere inserita in global.asax in Application_BeginRequest

    
risposta data 29.05.2018 - 22:00
fonte

Leggi altre domande sui tag