2014-04-08 10 views
14

Wenn ein Benutzer auf eine Website zugreift und seine Anmeldeinformationen eingibt, die in unserer Datenbank gespeichert sind, erstellen wir eine Authentifizierung.So stellen Sie TimeOut für OwinContext in MVC ein 5

Wie stellen Sie das Timeout ein? MVC verwenden 5.en

Meine Authentifizierung sieht wie folgt aus:

 var claims = new List<Claim>(); 
     claims.Add(new Claim("UserId", user.UserID.ToString())); 
     claims.Add(new Claim(ClaimTypes.Name, user.FirstName + " " + user.LastName)); 
     claims.Add(new Claim(ClaimTypes.Email, user.Email)); 
     claims.Add(new Claim(ClaimTypes.NameIdentifier, user.UserID.ToString())); 
     var id = new ClaimsIdentity(claims, DefaultAuthenticationTypes.ApplicationCookie); 

     var ctx = Request.GetOwinContext(); 
     var authenticationManager = ctx.Authentication; 
     authenticationManager.SignIn(id); 

Antwort

22

Die Art und Weise einen festen Ablauf Zeitspanne zu setzen, ist die ExpireTimeSpan Eigenschaft in Ihrer Startup.Auth.cs Datei wie folgt zu setzen:

// Enable the application to use a cookie to store information for the signed in user 
app.UseCookieAuthentication(new CookieAuthenticationOptions 
{ 
    AuthenticationType = DefaultAuthenticationTypes.ApplicationCookie, 
    LoginPath = new PathString("/Account/Login"), 
    ExpireTimeSpan = TimeSpan.FromDays(2) 
}); 

Beachten Sie, dass Sie den Cookie auch so setzen müssen, dass er dauerhaft bleibt. In Ihrem Code werden Sie in einem Bool neben dem Benutzernamen und Passwort übergeben müssen, und dann

authenticationManager.SignIn(id); 

authenticationManager.SignIn(new AuthenticationProperties { IsPersistent = rememberMe }, id); 
+0

Arbeitete aber nur eine Korrektur: authenticationManager.SignIn (neue AuthenticationProperties {IsPersistent = true}, id); – DavidJS

+0

Freut mich zu hören. Achten Sie darauf, die Frage als beantwortet zu markieren. – Dave

+0

Leider funktioniert das nicht für mich, keine andere Alternative? –

4

Mit dem folgenden Sie Startup verwenden müssen nicht sein ändern. cs

AuthenticationManager.SignIn(new AuthenticationProperties() { IsPersistent = true, ExpiresUtc = DateTime.UtcNow.AddHours(1), }, id); 
+0

Das hilft mir, weil mein TimeOut für verschiedene Benutzer unterschiedlich ist. –

Verwandte Themen