[英]How to stop extending cookie expiration time for ajax calls?
我将ExpireTimeSpan设置为一天,但是我的UI中有通知服务,该服务每5分钟发送一次ajax调用,因此ajax调用会延长有效期,因此,如果用户是,则系统将在一段时间后不注销在积极,我该如何解决
int expireTime = 1440; //one day
app.UseCookieAuthentication(new CookieAuthenticationOptions
{
AuthenticationType = DefaultAuthenticationTypes.ApplicationCookie,
LoginPath = new PathString("/Account/Login"),
ExpireTimeSpan = TimeSpan.FromMinutes(expireTime),
SlidingExpiration=true,
Provider = new CookieAuthenticationProvider
{
OnValidateIdentity = SecurityStampValidator.OnValidateIdentity<ApplicationUserManager, ApplicationUser>(
validateInterval: TimeSpan.FromMinutes(30),
regenerateIdentity: (manager, user) => user.GenerateUserIdentityAsync(manager))
}
});
我找到了用于asp.net核心的解决方案: https : //medium.com/cacti-pins/conditionally-set-sliding-expiration-time-on-authentication-cookies-in-asp-net-core-e70ffe7da49d,但我m使用.net4.5
对于该问题,我认为没有特别简单的解决方案,但是您可以考虑几种方法。
首先,您可以考虑将WebSockets用于通知服务。 在C#应用程序中,使用SignalR似乎是明智的。 这将允许您打开客户端与服务器之间的持久连接并启用服务器推送,这只应包括在初始连接上发送cookie。 请注意,默认情况下,如果浏览器中不支持其他选项,则SignalR可以降级为长时间轮询,而这仍然会遇到相同的问题。
另外,您可以考虑将ajax调用换成javascript fetch()
。 这样,您可以在发出请求时忽略Cookie。 但是,您将需要在应用程序内生成备用授权令牌并进行管理。 您可能还需要将通知服务移至其自己的应用程序中,以便它不使用相同的身份验证方案。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.