如何停止延长ajax调用的cookie过期时间?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何停止延长ajax调用的cookie过期时间?相关的知识,希望对你有一定的参考价值。

我将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,但我使用的是.net4.5

答案

我不认为这个问题有一个特别简单的解决方案,但你可以看到几个途径。

首先,您可以考虑使用WebSockets进行通知服务。在C#应用程序中,使用SignalR似乎是明智的。这将允许您在客户端和服务器之间打开持久连接并启用服务器推送,这应该只涉及在初始连接上发送cookie。请注意,默认情况下,如果浏览器中不支持其他选项仍然会遇到同样的问题,则SignalR可以降级为长轮询。

或者你可以看看交换ajax调用javascript fetch()。这将允许您在提出请求时省略cookie。但是,您需要在应用程序中生成备用授权令牌并对其进行管理。您可能还需要将通知服务移动到其自己的应用程序中,以便它不使用相同的身份验证方案。

以上是关于如何停止延长ajax调用的cookie过期时间?的主要内容,如果未能解决你的问题,请参考以下文章

如何严格设置php中session过期时间

ASP.NET Core MVC:设置身份 cookie 过期

如何严格设置php中session过期时间?

java - 如何延长过期时间java json web token?

如何在过期前延长asp.net中的会话超时

使用 WIF 和 jquery ajax 请求时 ASP.NET MVC 3 中的会话 Cookie 过期处理