Domanda

Devo implementare la funzionalità di auto-disconnessione in uno dei miei progetti e ho appena figura gergo da dove cominciare alla ricerca di idee, ma SO .

Che cosa ho bisogno è per l'applicazione per reindirizzare l'utente alla pagina di login se la sessione utente è scaduta.  Ti prego, dimmi da quello che dovrebbe essere il mio approccio per affrontare questa esigenza.

problema dichiarazione: Se l'utente lascia il sistema per più di n minuti in un dato esempio di log-in, il sistema li deve registrare automaticamente.

È stato utile?

Soluzione 2

Ciò è stato ottenuto dalla seguente modo:

1) Salvare il time-stamp di ogni richiesta (server e ajax escludendo la richiesta di sessione di controllo Ajax) al server in una sessione var.

2) interroga il server tramite una funzione JS usando ajax ad intervalli frequenti e verificare se il diff di tempo tra la sessione di time-stamp e l'orario della richiesta Ajax è superiore al timeout della sessione val poi di log-off l'utente corrente e il ritorno un bool per tale richiesta Ajax.

3) di reindirizzamento della pagina corrente alla pagina di login se il bool restituito è vero.

Altri suggerimenti

Andando sui commenti tanto quanto la questione, non sono sicuro se siete alla ricerca di qualcosa che registrerà l'utente dopo un certo periodo di tempo indipendentemente dall'attività, o solo dopo un periodo di inattività.

Se sei felice di utilizzare il , questo può essere fatto per voi, senza lavori importanti:

Imposta il tuo provider di appartenenza .

Assicurati che il tuo sezione di autenticazione definisce un loginUrl:

<authentication mode="Forms">
  <forms loginUrl="login.aspx" />
</authentication>

È possibile impostare un timeout diverso da quello predefinito di 30 minuti utilizzando il "timeout" attributo costituisce elemento :

<authentication mode="Forms">
  <forms loginUrl="login.aspx" timeout="15"/>
</authentication>

Questa registrerà l'utente dopo 15 minuti di inattività sul tuo sito (sia con il browser aperto senza "battito cardiaco" javascript o se passano 15 minuti su un altro sito).

Negare l'accesso agli utenti anonimi

<authorization>
  <deny users="?" />
</authorization>

Quindi assicurarsi che i dati di accesso, la registrazione e le pagine di password eventualmente dimenticati sono accessibili a tutti gli utenti che utilizzano il posizione Elemento:

<location path="Logon.aspx">
  <system.web>
    <authorization>
      <allow users="?"/>
    </authorization>
  </system.web>
</location>
<location path="Register.aspx">
  <system.web>
    <authorization>
      <allow users="?"/>
    </authorization>
  </system.web>
</location>
<!-- etc -->

In questo modo, quando cookie di autenticazione di un utente scade che verrà reindirizzato all'URL specificato nell'elemento loginUrl della pagina forme.


Se non stai utilizzando i meccanismi di ASP.NET standard, allora si sarebbe probabilmente meglio l'attuazione di una "pagina di base" tipo di modello.

Creare una nuova classe che eredita da System.Web.UI.Page che controllerà lo stato di login dell'utente, e se non sono registrati nel / scaduta poi li reindirizza alla pagina di login.

In voi le pagine che devono essere bloccato, invece di ereditare da System.Web.UI.Page, si eredita dalla classe di base pagina (un esempio di questo tipo di messa a punto di fare qualcosa di simile - Controllare l'impostazione su ciascuna pagina ) può essere visto in mia risposta qui


La pagina di login sarà probabilmente bisogno di avere qualche fotogramma busting JS in esso per saltare di nuovo fuori dalla iFrame:

if (top!=self.parent){
  top.location=self.parent.location;
}

O stai dicendo che premendo il tasto "back" si possono ancora vedere le tue pagine attraverso la cache del browser? In questo caso avrete bisogno di giocare in giro con le intestazioni Cache in ogni pagina:

Response.Cache.SetCacheability(HttpCacheability.NoCache);

Ok, bene, in questo caso avrete anche bisogno di un oggetto Timer JS per eseguire una Location.Replace alla tua pagina di login - hanno questo in un controllo utente in ogni pagina (o, meglio ancora, nella tua pagina master) per reindirizzare automaticamente l'utente dopo n minuti:

<script type="text/javascript">
  setTimeout('location.Replace("/login.aspx")', 900000);
</script>

Il tempo è espresso in millisecondi, quindi questo li si sposterà in 15 minuti, e senza bisogno di ottenere l'intero framework jQuery in atto solo per questo.

Si potrebbe anche voler guardare nel tag meta refresh:

<meta http-equiv="refresh" content="900;url=http://example.com/login.aspx" />

che costringerà il browser per aggiornare la pagina di accesso dopo 15 minuti (di questo uno in secondi).

Leggi la documentazione MSDN all'indirizzo http://msdn.microsoft.com/ it-it / library / ms972429.aspx

Dal momento che non si sa da dove cominciare, potete trovare questo articolo utile 4guys: http://www.4guysfromrolla.com/webtech/110701-1.shtml

Modifica

jQuery timer può essere utile se si desidera reindirizzare a un URL dopo un periodo noto di tempo è trascorso (vale a dire la sessione periodo di scadenza).

Spero che questo aiuti.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top