【问题标题】:two .ASPXAuth cookies两个 .ASPXAuth cookie
【发布时间】:2016-10-18 15:05:01
【问题描述】:

我已将解决方案从 vs2013 移植到 2015。我的表单身份验证不再起作用。

在第一个请求中,我让用户登录并创建 cookie。 如果我刷新页面或单击任何我的 ASPXAUTH cookie 不再存在的地方。

在 chrome 中,我可以看到我有同名的响应 cookie。不知道为什么。

请求 Cookie 613 .ASPXAUTH C83F564B3B0C929EA69218DC83C651DB2376C2541E9F83C4CD6FCB6B76570B68DD0DF1BB184531ACDABAA2F565C274D59B9958D372C4B927E2D34CD6D1337E26D82D346729DB2B60B263D51FF6BC1E5B464FDF5B32E003F9C963A7A5815D415C113C7A038D46FFD1441FE1F97F604CD1595BF4A430071BB4C47C8E18C4730E18BC827388 N / A N / A N / A 274,点击 ASP.NET_SessionId 2pyvx1ia0rlsfymsmormbbcg N/A N/A N/A 44
响应 Cookie 18 .ASPXAUTH / 会话 18


我用来创建身份验证 cookie 的代码是:

Dim ticket As FormsAuthenticationTicket = New FormsAuthenticationTicket(1, userName, Date.Now, Date.Now.AddMinutes(timeout), True, String.Empty)
Dim encTicket As String = FormsAuthentication.Encrypt(ticket)

Dim loginCookie As HttpCookie = New HttpCookie(FormsAuthentication.FormsCookieName)
loginCookie.Value = encTicket
Response.Cookies.Add(loginCookie)

对这种行为有什么解释吗?谢谢

【问题讨论】:

  • 你确定这是 C# 代码吗?为什么要添加 C# 标签?

标签: c# asp.net visual-studio-2013 visual-studio-2015


【解决方案1】:

在您的代码中,您手动创建 FormsAuthenticationTicket

除了上面的代码,你还需要在每次请求时从cookie中获取用户名,并保存在IPrincipal对象中,这样你就可以访问User.Identity

Global.asax.cs

public class Global : HttpApplication
{
    private void Application_AuthenticateRequest(object sender, EventArgs e)
    {
        HttpCookie decryptedCookie =
            Context.Request.Cookies[FormsAuthentication.FormsCookieName];

        FormsAuthenticationTicket ticket =
            FormsAuthentication.Decrypt(decryptedCookie.Value);

        var identity = new GenericIdentity(ticket.Name);
        var principal = new GenericPrincipal(identity, null);

        HttpContext.Current.User = principal;
        Thread.CurrentPrincipal = HttpContext.Current.User;
    }
}

【讨论】:

    猜你喜欢
    • 2018-10-24
    • 2010-12-26
    • 2010-09-30
    • 2018-12-08
    • 2013-05-01
    • 2015-04-08
    • 2012-04-29
    • 2012-06-03
    • 1970-01-01
    相关资源
    最近更新 更多