AspNet Identity和OWIN

时间:2018-04-30 13:35:56

标签: asp.net-identity owin

我希望有人可以帮助我。我们正在编写一个MVC应用程序,我们正在使用AspNet Identity和OWIN,我们正在尝试将超时设置为4小时。但是,似乎无论我们在30分钟内将站点超时设置为超时,我们都会被重定向到登录页面。

另外,这是EpiServer中的MVC应用程序,但使用AspNet Identity和OWIN的机制是相同的。

在我们的web.config中,我们有以下设置:

<authentication mode="None">
</authentication>

 <sessionState mode="InProc" timeout="240" />

,在appSettings中,

<add key="SessionTimeout" value="240" />

在我们的OWIN启动类中,我们有以下代码:

public class Startup
{
    public void Configuration(IAppBuilder app)
    {
        CookieAuthenticationProvider provider = new CookieAuthenticationProvider();
        Action<CookieApplyRedirectContext> originalHandler = provider.OnApplyRedirect;

        provider.OnApplyRedirect = context =>
        {
            context.RedirectUri = $"{new PathString(Global.LoginPath)}/?session_expired=1";
            originalHandler.Invoke(context);
        };

        provider.OnValidateIdentity = SecurityStampValidator.OnValidateIdentity<ApplicationUserManager<PortalDirectApplicationUser>, PortalDirectApplicationUser>(
                    validateInterval: TimeSpan.FromMinutes(30),
                    regenerateIdentity: (manager, user) => manager.GenerateUserIdentityAsync(user));

        app.SetupPortalDirectAspNetIdentity<PortalDirectApplicationUser>();

        app.UseCookieAuthentication(new CookieAuthenticationOptions
        {
            AuthenticationType = DefaultAuthenticationTypes.ApplicationCookie,
            CookieName = "OurCookie",
            LoginPath = new PathString(Global.LoginPath),
            Provider = provider,
            SlidingExpiration = true,
            ExpireTimeSpan = TimeSpan.FromMinutes(int.Parse(ConfigurationManager.AppSettings["SessionTimeout"]))
        });
    }
}

因此启动类中的超时也是240分钟。

有人能指出我为什么网站在30分钟内超时的正确方向?我搜索了答案,显然我没有正确设置。

谢谢!

0 个答案:

没有答案