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

问题描述 投票:2回答:1

我将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

c# asp.net-mvc cookies asp.net-identity owin
1个回答
0
投票

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

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

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

© www.soinside.com 2019 - 2024. All rights reserved.