Facebook连接&;ASP.NET表单身份验证-计时/Cookie问题

Facebook连接&;ASP.NET表单身份验证-计时/Cookie问题,asp.net,cookies,facebook,forms-authentication,Asp.net,Cookies,Facebook,Forms Authentication,这是我所拥有的: ASP.NET 4.0 Web应用程序 表单身份验证(基于Cookie) 以下是我想做的: 与Facebook Connect集成(使用JavaScript和Graph API) 为我的用户提供单一登录服务(自动登录 用户是否已登录并连接 (至Facebook) 在每个页面上都有一个显示匿名/登录用户详细信息的控件 问题是: 在这个用户控件(在每个页面上,所以考虑这个事件在每个页面请求上执行)的代码> Page预告器< /代码>中,我尝试基于脸谱网身份验证状态(Java

这是我所拥有的:

  • ASP.NET 4.0 Web应用程序
  • 表单身份验证(基于Cookie)
以下是我想做的:

  • 与Facebook Connect集成(使用JavaScript和Graph API)
  • 为我的用户提供单一登录服务(自动登录 用户是否已登录并连接 (至Facebook)
在每个页面上都有一个显示匿名/登录用户详细信息的控件

问题是: 在这个用户控件(在每个页面上,所以考虑这个事件在每个页面请求上执行)的代码> Page预告器< /代码>中,我尝试基于脸谱网身份验证状态(JavaScript API - Cookie)进行自动登录。 如果登录成功,我将使用
FormsAuthentication.SetAuthCookie
将他们登录

这一切都很好

但是,在我进行单点登录(字面上是下一行)之后,我需要呈现匿名内容(请登录)或经过身份验证的用户内容(显示名称等)。问题是,用户还没有真正“认证”到我的站点。要对我的站点进行“身份验证”,我需要做标准的工作(检查
HttpContext.User.Identity.IsAuthenticated
属性)

我认为它还没有设置为
“true
”,因为表单验证cookie已经创建,但这是在响应中,
HttpContext.User.Identity.IsAuthenticated
基于此时的请求-我说的对吗

因此,当然,即使用户已登录,它也会显示匿名详细信息

当然,当我刷新页面时,会显示正确的用户详细信息

因此,这几乎是一个时间问题。如何自动登录用户(通过
FormsAuthentication.SetAuthCookie
)以确保
HttpContext.user.Identity.IsAuthenticated
为真

也许我在错误的地方进行身份验证/单点登录

或者我几乎需要执行
响应。将
重定向到我自己,以便刷新HTTP请求中的cookie

大家都知道,Facebook Connect的doco是分散的、最小的,所以这一切都是拼凑在一起的问题

任何帮助都将不胜感激……干杯

好吧,我找到了答案(我希望这个答案不是答案)

正如我所预测的,
FormsAuthentication.SetAuthCookie
在HTTP响应流中创建身份验证cookie。但是
HttpContext.User.Identity.IsAuthenticated
读取HTTP请求流(没有cookie)

因此,解决方案是使用
Response.Redirect(this.Context.Request.RawUrl,true)
(第二个参数终止当前页面执行)以编程方式刷新页面,以便在HTTP请求中重新加载cookie

这就是为什么我想我们总是有一个
Login.aspx
页面,该页面设置表单cookie,然后重定向到某处,因为当重定向到“某处”时,会发出另一个请求,以便刷新cookie

我可能会把Facebook授权的东西放在一个独立的.aspx页面中,这样做的方式与常规表单auth相同

哦,微软的一位人士提到了“刷新”的想法