2017-03-24 1 views
0

Ich versuche, meine MVC-Site nach einer Zeit der Inaktivität Timeout.Timeout MVC Website nach Inaktivität

Ich habe viele Dinge ausprobiert, aber keine scheint zu funktionieren. Ich habe folgendes versucht:

die CookieAuthenticationOptions-Klasse

app.UseCookieAuthentication(new CookieAuthenticationOptions 
    { 
     ExpireTimeSpan = TimeSpan.FromMinutes(1), 
     AuthenticationType = DefaultAuthenticationTypes.ApplicationCookie, 
     LoginPath = new PathString("/xxx") 
    }); 

mit Formularauthentifizierung Element in der web.config:

<authentication mode="Forms" > 
    <forms loginUrl="~/xxxx" timeout="1"/> 
</authentication> 

und auch die session in der Konfigurationsdatei:

<sessionState timeout="1"/> 

Aber keiner von diesen scheint zu funktionieren.

Was fehlt mir und was ist der beste Ansatz?

Antwort

0

Zuerst verbinden Sie hier zwei Konzepte: Sitzungszeitlimit und Authentifizierungszeitlimit. Mit anderen Worten, es gibt kein "Website-Timeout". Sie müssen herausfinden, was Sie hier eigentlich kontrollieren wollen. Als nächstes sind Sitzungstimeouts gleitend, so lange der Benutzer die Website aktiv verwendet, wird ihre Sitzung nie Timeout. Authentifizierungstimeouts sind jedoch absolut, sodass der Benutzer nach Ablauf der angegebenen Zeit abgemeldet wird, unabhängig davon, ob er die Website aktiv verwendet oder nicht.

Soweit Authentifizierungs-Zeitüberschreitungen gehen, werden Sie hier auch zwei Konzepte zusammenfassen: Identität und Mitgliedschaft (Formularauthentifizierung). Das erste Bit des Codes, das Sie haben, ist, wie das Authentifizierungstimeout in ASP.NET Identity gesteuert wird, während das zweite Stück Code ist, wie Sie das mit ASP.NET-Mitgliedschaft steuern. Die beiden schließen sich gegenseitig aus und müssen offensichtlich mit dem tatsächlichen Authentifizierungsmechanismus übereinstimmen, den Ihr Projekt verwendet.

+0

Vielen Dank für Ihre Antwort. Also versuche ich eine Mischung aus beiden zu machen. Ich verwende FormsAuthentication.SetAuthCookie und Response.SetCookie, um ein HttpCookie zu übergeben, das nach etwa 10 Stunden abläuft. Aber ich möchte auch, dass die Sitzung abläuft, wenn die Website 30 Minuten lang nicht benutzt wurde. Der FormsAuthentication.SetAuthCookie und Response.SetCookie Teil scheint es nur das Sitzungstimeout zu funktionieren, das nicht ist. – Sun

+0

Alles was benötigt wird ist ''. Wenn der Benutzer 30 Minuten lang nicht aktiv ist, läuft die Sitzung ab. Beachten Sie, dass der Benutzer * total * inaktiv sein muss. Jede Anfrage an die Website (AJAX enthalten) wird das Zeitlimit zurücksetzen. –

+0

Das funktioniert nicht. Ich vermute es, weil der Cookie existiert, der alles andere außer Kraft setzt und nur den Benutzer zurückmeldet. – Sun

Verwandte Themen