gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-03 14:50:14 24 4
gpt4 key购买 nike

我将 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 core 找到了这个解决方案: 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。但是,您将需要在您的应用程序中生成一个替代授权 token 并对其进行管理。您可能还需要将通知服务移动到它自己的应用程序中,这样它就不会使用相同的身份验证方案。

关于c# - 如何停止延长 ajax 调用的 cookie 过期时间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52071783/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com