Symfony2,FOSUserBundle,禁用cookie的身份验证

时间:2013-07-07 16:49:27

标签: symfony cookies sessionid

如何在没有cookie的情况下在Symfony2中进行身份验证?如何生成类似于此http://some.site/hello/roman?PHPSESSID=9ebca8bd62c830d3e79272b4f585ff8f或此http://some.site/9ebca8bd62c830d3e79272b4f585ff8f/hello/roman或其他始终可用的sessionid参数的网址。感谢您的任何帮助。

1 个答案:

答案 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所说,这不是一个非常干净的要求。