Session sfGuardPlugin会话:如何将其与wget一起重用——或将SID映射到sfGuardUser
最近,我被要求在我的项目中的一个Symfony模块中添加一个xmlapi。我做到了,而且效果很好。对于身份验证,我们使用Session sfGuardPlugin会话:如何将其与wget一起重用——或将SID映射到sfGuardUser,session,authentication,cookies,symfony1,wget,Session,Authentication,Cookies,Symfony1,Wget,最近,我被要求在我的项目中的一个Symfony模块中添加一个xmlapi。我做到了,而且效果很好。对于身份验证,我们使用sfGuardPlugin。Symfony版本是1.3.11。使用推进,而不是教条 最近向我提出的请求如下: 我们将在网站中嵌入一个Flash游戏 Flash将执行对XML API的请求 编写Flash应用程序的人说它不会与浏览器共享cookies 我们希望Flash能够重用当前登录用户的会话(如果没有用户登录,我们甚至不允许显示) 我确实尝试过这个可能的解决方案:(摘自其他S
sfGuardPlugin
。Symfony版本是1.3.11。使用推进,而不是教条
最近向我提出的请求如下:
Symfony
cookie中wget
)中复制此值,并执行session\u id(“被盗的session\u id”)
,我将能够复制会话,让相同的用户登录,等等wget--post data='session_id=blablabla'X.X.X:NN/api/bla.xml-O-
。我的服务器PHP代码解析此POST参数并将其提供给session\u id
函数。然后在日志中报告会话id('blabla')
正在返回1
。但是,调用$this->getUser()->getGuardUser()
将返回null
会话\u id
映射到有效的sfGuardUser
或找到重用已存在会话的替代方法
假设我可以完全访问cookies。我想知道为了实现这一点,应该复制其中的哪一个(或全部?)
顺便说一句,我在Chrome开发工具中看到,symfony
cookie属于会话类型。因此,我的方法为什么不起作用也就不足为奇了,但在使用sfGuardPlugin
时,我不知道如何在Symfony中实现这一点
我确实意识到这不是最明智的问题之一,但同样,我只是需要帮助
谢谢你抽出时间
(迪米特尔p.)
哎呀,忘了提及我在我的域中看到的cookies:
- 西蒙尼
- 还记得吗
- __乌特玛
- __utmb
- __utmc
- __utmz
不过,我猜最后四个是针对谷歌分析的。我不想这样做,但我找不到其他替代方案:
$wget--header='Cookie:symfony=blablabla'X.X.X:NN/api/bla.xml-O-
我希望我的XML API是REST,但很明显,Symfony不允许使用Cookie以外的其他方式进行身份验证请求(并且使会话ID始终包含在URL中根本不是一个选项)
尽管如此,如果有人带着一个完全休息的备选方案出现,我将投票给他/她的答案。您将需要某种方法来指定哪个用户正在执行(wget)请求。默认情况下,PHP会话使用会话ID 实现这一点的常用方法是基于令牌的身份验证。实现这一点最常用的方法是OAuth,它有许多默认库(对于Symfony和API使用者都是如此)
如果您是唯一使用此API的用户,那么您还可以为每个用户每个会话创建一个自定义令牌(随机sha1字符串)(您可以将其存储在数据库中的某个位置)。现在您将创建类似“wget X.X.X.X:NN/api/bla.xml?token=asdfhdsfhf”的内容,谢谢您的建议。遗憾的是,我正在使用遗留软件。不能做太多的改变。好吧,我等了足够长的时间,等待有人回答和我一样的问题,并得到他的15个代表,但由于没有人出现,我将接受我的答案。;)