如何在没有cookie的情况下在Symfony2中进行身份验证?如何生成类似于此http://some.site/hello/roman?PHPSESSID=9ebca8bd62c830d3e79272b4f585ff8f或此http://some.site/9ebca8bd62c830d3e79272b4f585ff8f/hello/roman或其他始终可用的sessionid参数的网址。感谢您的任何帮助。
答案 0 :(得分: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 param生成每个url。可以在this answer中找到执行此操作的示例。
但正如评论中的nifr所说,这不是一个非常干净的要求。