gpt4 book ai didi

ASP.NET:身份验证过期时如何获取 FormsAuthenticationTicket 对象

转载 作者:行者123 更新时间:2023-12-02 20:54:20 28 4
gpt4 key购买 nike

我正在尝试检查用户当前 FormsAuthenticationTicket 的 Expired 属性,以查看身份验证期限是否已过期。但是,当期限到期时,我永远无法获得足够的信息来创建票证以进行检查。我试过这个:

FormsIdentity id = (FormsIdentity)User.Identity;
FormsAuthenticationTicket ticket = id.Ticket;

但是当认证期限到期时,User 为空。所以那是行不通的。我试过这个:

HttpCookie authCookie = context.Request.Cookies[FormsAuthentication.FormsCookieName];
FormsAuthenticationTicket authTicket = FormsAuthentication.Decrypt(authCookie.Value);

但是当身份验证期限到期时,Forms Cookie 就会消失,这意味着 authCookie 将为空。所以这是行不通的。

当身份验证期限到期时,是否有任何方法可以实际获取 FormsAuthenticationTicket 对象?一定有,因为对象中有一个“Expired”属性。我错过了什么?

谢谢。

最佳答案

假设浏览器(仅限 IE)不删除过期的 cookie,ASP.Net 就会从 Request.Cookies 集合中删除过期的身份验证票据。它仍然存在于 Request.Header["Cookie"] 中,但在 cookies 集合中不可用。我相信这种情况发生在“BeginRequest”和“AuthenticateRequest”事件之间的某个时间。我遇到了同样的问题,并且正在进一步探索。

    void context_BeginRequest(object sender, EventArgs e)
{
string cookie = ((HttpApplication)sender).Context.Request.Cookies[".ASPXFORMSAUTHSS"].Value;
FormsAuthenticationTicket ticket = FormsAuthentication.Decrypt(cookie);
}

关于ASP.NET:身份验证过期时如何获取 FormsAuthenticationTicket 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4491848/

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