加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

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

发布时间:2020-12-16 06:48:54 所属栏目:asp.Net 来源:网络整理
导读:我刚刚从VS2010升级到VS 2012,并且在FormsAuthentication方面遇到了一些问题. 我有一些旧代码,它创建一个自定义身份验证cookie来存储som信息: public static int SetAuthCookieT(this HttpResponse responseBase,string name,bool rememberMe,T userData) {
我刚刚从VS2010升级到VS 2012,并且在FormsAuthentication方面遇到了一些问题.

我有一些旧代码,它创建一个自定义身份验证cookie来存储som信息:

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中这已经发生了变化我不知道.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读