如果在ColdFusion/Railo中重新定位,则不会设置会话

如果在ColdFusion/Railo中重新定位,则不会设置会话,coldfusion,facebook-oauth,railo,Coldfusion,Facebook Oauth,Railo,我正在尝试从我的网站上实现一些基本的OAuth Facebook登录 在重定向用户之前,我设置了一个会话变量,一旦它们返回到我的站点,我就会检查它 我可以访问Facebook,登录,然后被返回,但一旦登录,会话变量就不存在了 我完全被难住了!考虑这个代码: lock scope="session" type="exclusive" timeout="30" { session.source["state"] = createUUID(); } // BUG? // http://hel

我正在尝试从我的网站上实现一些基本的OAuth Facebook登录

在重定向用户之前,我设置了一个会话变量,一旦它们返回到我的站点,我就会检查它

我可以访问Facebook,登录,然后被返回,但一旦登录,会话变量就不存在了

我完全被难住了!考虑这个代码:

lock scope="session" type="exclusive" timeout="30" {
    session.source["state"] = createUUID();
}

// BUG?
// http://helpx.adobe.com/coldfusion/kb/missing-session-variables-using-cflocation.html
if ( isDefined("session.source.state") ) {

    location(url="https://www.facebook.com/dialog/oauth?client_id=#application.fbappid#&redirect_uri=#application.fbredirecturl#&state=#session.source["state"]#&scope=email,publish_actions", addtoken="true");

}
有趣的是<代码>会话。源[“状态”]通过URL传递到Facebook…但返回时,它似乎已经消失了

这真是奇怪的行为

使用Javascript重定向不是一个选项。它需要是服务器端的

有人对此有线索吗?我用的是Railo

谢谢, 迈克

有趣的是<代码>会话。源[“状态”]通过URL传递到Facebook


这不应该发生在会话变量上。一定是出了什么事。请跟踪您的代码,或发布更多代码。

facebook将用户返回的回调url是什么?我询问的原因是,可能您正在将用户重定向到其他应用程序


最好的方法是在页面上转储application.applicationname,设置会话和用户返回的页面。确保它们匹配,否则会话将无法继续。

首先,在现实生活中,如果用户在facebook上的时间足够长,会话可能会超时。第二,cfdump您的会话作用域,以查看实际存在的内容。@DanBracuk重新定位发生后,会话被定义并在重定向显示预期的UUID之前转储它。我在Facebook上的时间不超过10秒,会话设置为30分钟。此外,其他会话变量仍然可以在网站的其他地方工作。在返回时转储会话会显示其他VAR,但不会显示重定向之前创建的VAR。这种情况是否发生在安全(https)服务器上?看啊,但它是。我已确认会话已检查,然后传递到Facebook,然后…重定向回…会话。找不到源[“状态”]。它完全死了。我认为这是cflocation(位置)的一个问题。请参阅我的代码注释中的链接。这仍然是一个相关的bug吗?如果是这样,如何在服务器端绕过它?@MichaelGiovanniPumo我认为,只要您的会话在您进行cflocation之前已经启动,您的用户在其浏览器上设置CFID/CFTOKEN就不会有问题。当它们返回时,只要发送正确的CFID/CFTOKEN组合,CF就可以获取正确的会话。但是,会话中的任何内容都不应作为文本在URL中传递。我尝试了addtoken=“true”和addtoken=“false”,但两者似乎都不起作用。这就是你说的吗?