如何在没有 brouser 的 cookie 的情况下在 Symfony2 中进行身份验证?如何生成这样的http://some.site/hello/roman?PHPSESSID=9ebca8bd62c830d3e79272b4f585ff8f或http://some.site/9ebca8bd62c830d3e79272b4f585ff8f/hello/roman或其他一些始终可用的 sessionid 参数的 url。感谢您的任何帮助。
问问题
1051 次
1 回答
0
你必须做两件事。首先,您必须扩展会话存储以从查询参数中获取会话。
namespace Elao\BackBundle\Session;
use Symfony\Component\DependencyInjection\ContainerInterface;
use Symfony\Component\HttpFoundation\Session\Storage\NativeFileSessionStorage;
class Storage extends NativeSessionStorage
{
public function __construct($savePath = null, array $options = array(), ContainerInterface $container)
{
$request = $container->get('request');
if ($request->query->has('sessionId')) {
$request->cookies->set(session_name(), 1); // We have to simulate this cookie, in order to bypass the "hasPreviousSession" security check
session_id($request->query->get('sessionId'));
}
return parent::__construct($savePath, $options);
}
}
来源:http ://www.elao.com/blog/symfony-2/symfony-2-loading-session-from-query-param.html
下一点,应该替换 UrlGenerator 以使用会话 id 参数生成每个 url。可以在此答案中找到执行此操作的示例。
但正如评论中的 nifr 所说,这不是一个非常干净的要求。
于 2013-07-07T18:01:56.203 回答