-2

如何在没有 brouser 的 cookie 的情况下在 Symfony2 中进行身份验证?如何生成这样的http://some.site/hello/roman?PHPSESSID=9ebca8bd62c830d3e79272b4f585ff8fhttp://some.site/9ebca8bd62c830d3e79272b4f585ff8f/hello/roman或其他一些始终可用的 sessionid 参数的 url。感谢您的任何帮助。

4

1 回答 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 回答