首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >FormsAuthenticationTicket为空

FormsAuthenticationTicket为空
EN

Stack Overflow用户
提问于 2012-04-06 16:00:39
回答 2查看 1.2K关注 0票数 1

使用Framework 4.0

场景1:

我是使用Live.com登录的。

Live.com FormsAuthenticationTicket中的值不是空的& ticket.name是我的UserID。

Local.com FormsAuthenticationTicket中的参数为空。

但我不知道这里遗漏了什么。

场景2:

我是使用Local.com登录的。

Local.com FormsAuthenticationTicket中的值不是空的& ticket.name是我的UserID。

Live.com FormsAuthenticationTicket中的参数为空。

我的计算机配置设置在本地站点和实时站点中相同

目标框架为4.0

ApplicationAuthenticate_request如下所示:

代码语言:javascript
复制
HttpCookie AuthCookie = Request.Cookies[FormsAuthentication.FormsCookieName];
FormsAuthenticationTicket ticket = null;
if (AuthCookie != null)
{
    try
    {
        ticket = FormsAuthentication.Decrypt(AuthCookie.Value);
        if (ticket != null && ticket.Name != null)
            Response.Write(ticket.Name);
    }
    catch (Exception ex11)
    {
        string sErr = ex11.Message + ex11.StackTrace;
    }
}

登录代码如下

代码语言:javascript
复制
authenticationTicket = new FormsAuthenticationTicket(UserId, mPersistant, 30);
//FormsAuthenticationTicket authenticationTicketV1 = new FormsAuthenticationTicket(1, userGuid,DateTime.Now, DateTime.Now.AddMinutes(30), lPersistant, "User");
string authEncrypt = FormsAuthentication.Encrypt(authenticationTicket);
FormsAuthenticationTicket authTickChk = FormsAuthentication.Decrypt(authEncrypt);
bool bChk = authTickChk.Name.Equals(authenticationTicket.Name);
// Create form identity from FormsAuthenticationTicket.
id = new FormsIdentity(authenticationTicket);
// Set the Context User
HttpContext.Current.User = this;
EN

回答 2

Stack Overflow用户

发布于 2012-04-07 13:09:59

你说的machine.config是指web.config吗?如果您的web.config文件不同,这可能是问题所在

代码语言:javascript
复制
<authentication mode="Forms">
  <forms loginUrl="member_login.aspx"
  cookieless="UseCookies"
  domain="contoso.com" />
</authentication>

您的浏览器只会将FormsAuth cookie提交到web.config文件中指定的域,也许您在每个环境中将此设置为不同的域?

票数 1
EN

Stack Overflow用户

发布于 2015-09-11 01:19:20

听起来表单身份验证cookie没有被发送到其他站点,这是预期的行为。需要认识到的是,表单身份验证只是一个传递加密值的cookie。表单身份验证票证仍然遵守cookie的所有规则,其中包括永远不会将一个站点(live.com)设置的cookie发送到另一个站点(local.com)的规则。

另外,我建议您使用FormsAuthentication.SetAuthCookie()来登录您的用户。登录代码似乎未设置cookie。

像Fiddler这样的工具可能会帮你把事情搞清楚。当您登录时,响应应该包含一个类似于Set-Cookie: .ASPXAUTH=FC0C57A...; path=/; HttpOnly的标头

每个后续请求都将发送一个类似于Cookie: ASP.NET_SessionId=zcsmunozu0iqshwcvb11qu1m; .ASPXAUTH=FC0C57A...的标头

但是,只有在域与设置.ASPXAUTH cookie的站点相同时,浏览器才会发送cookie。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10040768

复制
相关文章

相似问题

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