我希望有人可以帮助我。我们正在编写一个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分钟内超时的正确方向?我搜索了答案,显然我没有正确设置。
谢谢!