增加登录超时

时间:2017-08-25 16:21:06

标签: asp.net asp.net-mvc web-config asp.net-identity

我使用ASP.NET Identity创建了一个新的ASP.NET MVC网站。我使用Visual Studio 2017生成的标准逻辑,并选择了个人用户帐户

一切正常,但它似乎在大约10 - 20分钟不活动的情况下让我退出,并且我想保持登录的时间超过这个。

在谷歌搜索后,我找到了有关设置1,3的信息。但是,使用调试器,我可以看到默认情况下此值设置为14天。

Startup.Auth.cs:

CookieAuthenticationOptions.ExpireTimeSpan

Web.Config中:

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
});

那么,有没有人知道如何在我因不活动而退出之前增加时间?

2 个答案:

答案 0 :(得分:1)

您是否使用isPersistent标志登录?

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

您需要传递isPersistent = true以使用cookie数据再次自动登录。

如果您在此处被拒绝,则会在SecurityStampValidator.OnValidateIdentity中刷新您的身份,然后它会将您注销。

我建议你实现自己的SecurityStampValidator和UserManager,然后你可以调试它在OnValidateIdentity中拒绝你的原因。

另外检查你的缓存,也许你只是有一个缓存问题,它看起来就像你退出了,因为你显示了一些“旧的”内容。

答案 1 :(得分:0)

这是在web.config文件上配置的,如下所示

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

超时时间在属性 timeout 上以毫秒为单位定义