首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >两个.ASPXAuth饼干

两个.ASPXAuth饼干
EN

Stack Overflow用户
提问于 2016-10-18 15:05:01
回答 1查看 897关注 0票数 0

我已经将解决方案从vs2013移植到了2015年。我的表单身份验证不再有效。

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

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

请求Cookies 613 C83F564B3B0C929EA69218DC83C651DB2376C2541E9F83C4CD6FCB6B76570B68DD0DF1BB184531ACDABAA2F565C274D59B9958D372C4B927E2D34CD6D1337E26D82D346729DB2B60B263D51FF6BC1E5B464FDF5B32E003F9C963A7A5815D415C113C7A038D46FFD1441FE1F97F604CD1595BF4A430071BB4C47C8E18C4730E18BC827388 N/A 274 ASP.NET_SessionId 2 pyvx1ia0rsfymsmommbbcgN/A 44 响应协同18 .ASPXAUTH /会话18

我用来创建auth cookie的代码是:

代码语言:javascript
复制
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)

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

EN

回答 1

Stack Overflow用户

发布于 2016-10-18 15:16:30

在代码中,手动创建FormsAuthenticationTicket

除了上面的代码外,您还需要在每次请求时从cookie中检索用户名,并将其保存在IPrincipal对象中,以便您可以访问IPrincipal

Global.asax.cs

代码语言:javascript
复制
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;
    }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40111816

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档