gpt4 book ai didi

asp.net - 安装 .net 4.5 自定义表单后,身份验证中断

转载 作者:行者123 更新时间:2023-12-05 00:30:51 29 4
gpt4 key购买 nike

我刚刚从 VS2010 升级到 VS 2012,并且在 FormsAuthentication 方面遇到了一些问题。

我有一些旧代码,它创建一个自定义的 auth cookie 来存储其中的信息:

   public static int SetAuthCookie<T>(this HttpResponse responseBase, string name, bool rememberMe, T userData)
{
JavaScriptSerializer serializer = new JavaScriptSerializer();

var cookie = FormsAuthentication.GetAuthCookie(name, rememberMe);
var ticket = FormsAuthentication.Decrypt(cookie.Value);

var newTicket = new FormsAuthenticationTicket(ticket.Version,
ticket.Name,
ticket.IssueDate,
ticket.Expiration,
ticket.IsPersistent,
serializer.Serialize(userData),
ticket.CookiePath);

var encodedTicket = FormsAuthentication.Encrypt(newTicket);

cookie.Value = encodedTicket;
responseBase.Cookies.Add(cookie);

return encodedTicket != null ? encodedTicket.Length : 0;
}
}

升级到 .Net 4.5 后 HttpContext.Current.Request.IsAuthenticated 始终为 null。我已经看到有一种在 .Net 4.5 中进行身份验证的新方法,但我宁愿不使用它,因为我将无法从 .Net 4.0 升级生产环境。使用自定义身份验证 cookie 时是否可以设置身份验证?

最佳答案

我必须自己在 Global.asax 中设置当前用户:

    private void Application_AuthenticateRequest(Object sender, EventArgs e)
{
HttpCookie cookie = HttpContext.Current.Request.Cookies[FormsAuthentication.FormsCookieName];
if (cookie != null)
{
FormsAuthenticationTicket ticket = FormsAuthentication.Decrypt(cookie.Value);
HttpContext.Current.User = new System.Security.Principal.GenericPrincipal(new FormsIdentity(ticket), new string[0]);
}
}

我不知道为什么这在 .Net 4.5 中发生了变化。

关于asp.net - 安装 .net 4.5 自定义表单后,身份验证中断,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15762764/

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