【发布时间】:2010-07-14 23:48:03
【问题描述】:
这是我所拥有的:
- ASP.NET 4.0 Web 应用程序
- 表单身份验证(基于 Cookie)
这是我正在尝试做的事情:
- 与 Facebook Connect 集成(使用 JavaScript 和 Graph API)
- 为我的用户提供单点登录服务(自动登录 用户如果他们登录并连接 到 Facebook)
在每个页面上都有一个显示匿名/登录用户详细信息的控件。
问题出在:
在此用户控件的Page_PreRender 上(在每个页面上,因此请考虑在每个页面请求上执行此事件),我尝试根据 Facebook 身份验证状态(JavaScript API - Cookie)自动登录。
如果登录成功,我使用FormsAuthentication.SetAuthCookie 登录。
一切正常。
但是,在我进行单点登录后(字面意思是下一行),我需要呈现匿名内容(请登录)或经过身份验证的用户内容(显示名称等)。问题是,用户还没有真正“通过身份验证”到我的网站。要对我的网站进行“身份验证”,我会做一些标准的事情(检查HttpContext.User.Identity.IsAuthenticated 属性)。
我认为它尚未设置为 "true",因为已创建 Forms Auth cookie,但在响应中,HttpContext.User.Identity.IsAuthenticated 是基于此时的请求 - 我在吗?
当然,即使用户已登录,它也会显示匿名详细信息。
当我刷新页面时,当然会显示正确的用户详细信息。
所以这几乎是一个时间问题。我怎样才能自动登录用户(通过FormsAuthentication.SetAuthCookie)确保HttpContext.User.Identity.IsAuthenticated 是真实的?
也许我在错误的地方进行身份验证/单点登录?
或者我是否需要对自己做一个Response.Redirect 才能刷新 HTTP 请求中的 cookie?
众所周知,Facebook Connect 的文档是分散且极少的,因此只需将所有内容拼凑在一起即可。
任何帮助将不胜感激...干杯!
【问题讨论】:
标签: asp.net cookies facebook forms-authentication