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)
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相同
哦,微软的一位人士提到了“刷新”的想法