2017-08-25 1 views
2

J'ai créé un nouveau site Web ASP.NET MVC à l'aide de l'identité ASP.NET. J'utilise la logique standard générée par Visual Studio 2017 et j'ai sélectionné Comptes d'utilisateurs individuels.Augmentation du délai de connexion

Tout fonctionne bien, sauf qu'il semble me déconnecter dans les 10 à 20 minutes d'inactivité, et j'aimerais rester connecté plus longtemps.

Après avoir parcouru, j'ai trouvé des informations sur le réglage CookieAuthenticationOptions.ExpireTimeSpan. Cependant, en utilisant le débogueur, je peux voir que cette valeur est fixée à 14 jours par défaut.

Startup.Auth.cs:

app.UseCookieAuthentication(new CookieAuthenticationOptions 
{ 
    AuthenticationType = DefaultAuthenticationTypes.ApplicationCookie, 
    LoginPath = new PathString("/Account/Login"), 
    Provider = new CookieAuthenticationProvider 
    { 
     OnValidateIdentity = SecurityStampValidator.OnValidateIdentity<ApplicationUserManager, ApplicationUser>(
      validateInterval: TimeSpan.FromMinutes(30), 
      regenerateIdentity: (manager, user) => user.GenerateUserIdentityAsync(manager)) 
    }, 
    //SlidingExpiration = true,    // Default: true 
    //ExpireTimeSpan = TimeSpan.FromHours(1) // Default: 14 days 
}); 

web.config:

<system.web> 
    <authentication mode="None" /> 
    <compilation debug="true" targetFramework="4.6" /> 
    <httpRuntime targetFramework="4.5.2" executionTimeout="240" maxRequestLength="20480" /> 
    <httpModules> 
    <add name="ApplicationInsightsWebTracking" type="Microsoft.ApplicationInsights.Web.ApplicationInsightsHttpModule, Microsoft.AI.Web" /> 
    </httpModules> 
    <customErrors mode="Off"></customErrors> 
</system.web> 
<system.webServer> 
    <modules> 
    <remove name="FormsAuthentication" /> 
    <remove name="ApplicationInsightsWebTracking" /> 
    <add name="ApplicationInsightsWebTracking" type="Microsoft.ApplicationInsights.Web.ApplicationInsightsHttpModule, Microsoft.AI.Web" preCondition="managedHandler" /> 
    </modules> 
    <validation validateIntegratedModeConfiguration="false" /> 
<security> 
    <requestFiltering> 
     <requestLimits maxAllowedContentLength="20971520" /> 
    </requestFiltering> 
    </security> 
</system.webServer> 

Alors, est-ce que quelqu'un sait comment augmenter la quantité de temps avant que je sois connecté en raison à l'inactivité?

Répondre

0

Ceci est configuré sur le fichier web.config comme suit

<system.web> 
    <authentication mode="Forms"> 
    <forms loginUrl="~/SignIn/LoginPage" timeout="2880" defaultUrl="~/Pages/ServicesPage" /> 
    </authentication> 

le délai d'attente est défini sur la propriété délai d'attente dans miliseconds

+2

Merci, mais l'authentification par formulaires est l'ancienne méthode et l'identité ASP.NET est la nouvelle méthode. Sûrement, la seule réponse ne peut pas être que je dois faire les choses à l'ancienne. –

1

Avez-vous Connexion avec le drapeau isPersistent?

SignInManager.PasswordSignInAsync(string userName, string password, bool isPersistent, bool shouldLockout) 

Vous devez transmettre isPersistent = true pour vous reconnecter automatiquement aux données de cookie.

Votre identité sera actualisée dans SecurityStampValidator.OnValidateIdentity si vous êtes rejetée ici, elle vous déconnectera.

Je vous recommande d'implémenter votre propre SecurityStampValidator et UserManager, vous pouvez alors déboguer pourquoi il vous rejette dans OnValidateIdentity.

Vérifiez également votre mise en cache, peut-être que vous avez juste un problème de mise en cache et que vous avez simplement l'impression de vous être déconnecté parce que vous montrez du "vieux" contenu.

+0

Je crois que ce drapeau correspond à la case à cocher * Remember me *. Et oui, j'ai essayé de vérifier ça. –

+0

que se passe-t-il si vous définissez le "validateInterval:" à quelques secondes? vous déconnecte-t-il après cette période? –

+0

Ce n'est pas le cas. Permettez-moi cependant de comprendre: Lorsque vous créez une application MVC avec Visual Studio 2017 en utilisant le paramètre * Individual User Accounts *, dites-vous que vous pouvez laisser l'ordinateur inactif pendant, disons, une heure ou plus, et lorsque vous actualisez le page ou cliquez sur quelque chose que vous êtes encore connecté? –