gpt4 book ai didi

c# - 设置/更新 aspxauth 和 asp.net_sessionid cookie 的过期时间

转载 作者:行者123 更新时间:2023-11-30 20:05:54 27 4
gpt4 key购买 nike

我想知道是否有一种方法可以设置您的 .NET 应用程序以在浏览器中设置和更新 aspxauth 和 asp.net_sessionid cookie 的到期时间?

据我所知,cookie 的到期日期类似于 1/1/0001,告诉浏览器在浏览器关闭之前保留它们(我使用 Chrome 观察到了这一点)。我想设置一个明确的时间,但是,我需要根据每个请求更新该时间。

我正在尝试使用一些代码来做到这一点:

var timeoutMins = Session.Timeout;
if (Response.Cookies.Count > 0)
{
foreach (string s in Response.Cookies.AllKeys)
{
if (s == FormsAuthentication.FormsCookieName || s.ToLower() == "asp.net_sessionid")
{
Response.Cookies[s].Expires = DateTime.Now.AddMinutes(timeoutMins);
}
}
}

我尝试在 global.asax End_Request 事件中执行此操作,尽管这似乎不是一个好地方,因为它每页触发几次并且您无权访问 session 状态超时;此外它只在登录和注销时触发,所以基本上我可以设置一次但我永远无法更新它。这会导致我的用户在登录后 15 分钟后注销,即使他们一直处于事件状态也是如此。

似乎在某个地方会有一些设置告诉 .net 来处理这个?我知道这是一个奇怪的请求,但这是该项目的安全要求,所以我正在努力让它发挥作用!

最佳答案

看起来没有多少人尝试做我正在做的事情,但为了记录,我在应用程序端请求中添加了代码,以找到请求中的 cookie 并在具有适当过期时间的响应中重新创建它们:

var timeout = Convert.ToInt32(System.Configuration.ConfigurationManager.AppSettings["myTimeoutConfigSetting"]);    

foreach (var cookey in Request.Cookies.AllKeys)
{
if (cookey == FormsAuthentication.FormsCookieName || cookey.ToLower() == "asp.net_sessionid")
{
var reqCookie = Request.Cookies[cookey];

if (reqCookie != null)
{
HttpCookie respCookie = new HttpCookie(reqCookie.Name, reqCookie.Value);
respCookie.Expires = DateTime.Now.AddMinutes(timeout);

Response.Cookies.Set(respCookie);
}
}
}

关于c# - 设置/更新 aspxauth 和 asp.net_sessionid cookie 的过期时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10439483/

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