ASP.NET 生产服务器上的身份会话过期过快
ASP.NET Identity session expires too fast on prod server
将 this tutorial 应用到我的项目后,在我的本地主机上没有问题,但是当我部署到 plesk 上的产品服务器时,会话过期太快。大概不到5分钟,而且一直这样。
由于教程使用 localStorage 而不是 cookie,我不确定是否应该检查 cookie 超时。
哦,另一方面,我的 Startup.Auth.cs:
里有这个
public void ConfigureAuth(IAppBuilder app)
{
//...
OAuthOptions = new OAuthAuthorizationServerOptions
{
//...
AccessTokenExpireTimeSpan = TimeSpan.FromDays(14),
};
}
prod IIS 如何设置超时以及我应该在 web.config 中做什么来覆盖这个超时?
我假设您的意思是 14 天对于您的生产环境来说还不够长?如果不是,您将必须澄清 'too fast'.
的确切含义
最简单的方法是在 web.config 中添加一个设置。
<appSettings>
<add key="cookieExpirationDays" value="30"/>
</appSettings>
然后在你的方法中设置。
public void ConfigureAuth(IAppBuilder app) {
//...
var daysStr = System.Configuration.ConfigurationManager.AppSettings["cookieExpirationDays"];
var days = string.IsNullOrEmpty(daysStr) ? 14 : int.Parse(daysStr);
OAuthOptions = new OAuthAuthorizationServerOptions
{
//...
AccessTokenExpireTimeSpan = TimeSpan.FromDays(days),
};
}
EDIT(响应 OP 编辑)
如果您使用 cookie 来保存身份验证令牌,请尝试此操作(请参阅初始化程序的最后一行)。
app.UseCookieAuthentication(new CookieAuthenticationOptions
{
CookieName = "SecurityCookie",
AuthenticationType = DefaultAuthenticationTypes.ApplicationCookie,
LoginPath = new PathString("/Authentication/Login"),
CookieSecure = CookieSecureOption.SameAsRequest,
CookieHttpOnly = true,
AuthenticationMode = AuthenticationMode.Active,
Provider = cookieProvider, // instance of Microsoft.Owin.Security.Cookies.CookieAuthenticationProvider
LogoutPath = new PathString("/Authentication/LogOff"),
SlidingExpiration = true,
ExpireTimeSpan = TimeSpan.FromDays(days),
});
编辑 2 添加了示例链接
将 this tutorial 应用到我的项目后,在我的本地主机上没有问题,但是当我部署到 plesk 上的产品服务器时,会话过期太快。大概不到5分钟,而且一直这样。
由于教程使用 localStorage 而不是 cookie,我不确定是否应该检查 cookie 超时。
哦,另一方面,我的 Startup.Auth.cs:
里有这个 public void ConfigureAuth(IAppBuilder app)
{
//...
OAuthOptions = new OAuthAuthorizationServerOptions
{
//...
AccessTokenExpireTimeSpan = TimeSpan.FromDays(14),
};
}
prod IIS 如何设置超时以及我应该在 web.config 中做什么来覆盖这个超时?
我假设您的意思是 14 天对于您的生产环境来说还不够长?如果不是,您将必须澄清 'too fast'.
的确切含义最简单的方法是在 web.config 中添加一个设置。
<appSettings>
<add key="cookieExpirationDays" value="30"/>
</appSettings>
然后在你的方法中设置。
public void ConfigureAuth(IAppBuilder app) {
//...
var daysStr = System.Configuration.ConfigurationManager.AppSettings["cookieExpirationDays"];
var days = string.IsNullOrEmpty(daysStr) ? 14 : int.Parse(daysStr);
OAuthOptions = new OAuthAuthorizationServerOptions
{
//...
AccessTokenExpireTimeSpan = TimeSpan.FromDays(days),
};
}
EDIT(响应 OP 编辑)
如果您使用 cookie 来保存身份验证令牌,请尝试此操作(请参阅初始化程序的最后一行)。
app.UseCookieAuthentication(new CookieAuthenticationOptions
{
CookieName = "SecurityCookie",
AuthenticationType = DefaultAuthenticationTypes.ApplicationCookie,
LoginPath = new PathString("/Authentication/Login"),
CookieSecure = CookieSecureOption.SameAsRequest,
CookieHttpOnly = true,
AuthenticationMode = AuthenticationMode.Active,
Provider = cookieProvider, // instance of Microsoft.Owin.Security.Cookies.CookieAuthenticationProvider
LogoutPath = new PathString("/Authentication/LogOff"),
SlidingExpiration = true,
ExpireTimeSpan = TimeSpan.FromDays(days),
});
编辑 2 添加了示例链接