symfony2将会话Id作为GET参数附加到Url
我觉得我的问题太基本了,我找不到关于它的信息 在我们的symfony2应用程序中,我们希望将sessionId作为GET参数附加到每个Url,例如。 我们想用它来识别调试用户,也可以识别不允许在浏览器上使用cookie的用户 我怎样才能做到这一点?有没有什么好办法?还是我必须开发一个类来附加会话?也许是个倾听者 为了澄清我的问题:symfony2将会话Id作为GET参数附加到Url,symfony,Symfony,我觉得我的问题太基本了,我找不到关于它的信息 在我们的symfony2应用程序中,我们希望将sessionId作为GET参数附加到每个Url,例如。 我们想用它来识别调试用户,也可以识别不允许在浏览器上使用cookie的用户 我怎样才能做到这一点?有没有什么好办法?还是我必须开发一个类来附加会话?也许是个倾听者 为了澄清我的问题: :我正在寻找一个中心位置,让我的应用程序始终将get参数附加到每个呼叫 当前位置我正在寻找正确的地方再次阅读(尽管我想我会使用我同时找到的一个听众) 我们正在Apa
我们正在Apache服务器上使用Symfony 2.7。我们最终解决了这个问题,具体如下: 我们已经有了一个类来扩展细枝功能。它位于文件夹../OurBundle/Twig中,称为
class CoreExtension extends Twig_Extension implements Twig_Extension_GlobalsInterface {....
我们有一个方法:
public function addSession($url)
{
$sessionId = VisitorHolder::get()->getSessionId();
$query = parse_url($url, PHP_URL_QUERY);
parse_str($query, $arrQuery);
if (empty($query)) {
$url .= '?'.self::OUR_SESSION_ID_VAR_NAME.'='.$sessionId;
} elseif (!empty($query) && empty($arrQuery[self::GKM_SESSION_ID_VAR_NAME])) {
$url .= '&'.self::OUR_SESSION_ID_VAR_NAME.'='.$sessionId;
}
return $url;
}
在twig文件中(我真的希望避免这样),我们改变了我们的喜好,如下所示:
<p>
<a loading="1" href="{{ orderlink }}">
{{ content.getDescription('DE','EN') }}
</a>
</p>
之后:
<p>
<a loading="1" href="{{ orderlink | addSessionId }}">
{{ content.getDescription('DE','EN') }}
</a>
</p>
因此,您仍然需要浏览模板中的所有链接并将其添加到需要会话的位置。然后,该方法检查会话是否已附加,并将附加一次
您也可以在另一个包中使用此扩展,只要您通过services.yml将其传递到那里
希望这能帮助遇到同样问题的人。我认为使用请求事件侦听器是可能的。但是我会重新考虑几次
谁不允许浏览器上有cookies
。有多少用户这样配置他们的浏览器?足够多的人去考虑它。但无论如何,出于调试目的,我们都需要它。您知道,在这种情况下,当产品团队说“此用户与我们的应用程序有问题”时,sessionId通常是确定“此用户”是谁以及他做了什么的唯一方法。将会话ID放入日志如何?当然,会话ID也会放入日志中。但是,如何将智能手机浏览器的视图连接到匹配的日志条目?我需要url中的一个参数来标识用户。我们决定它应该是会话id,我正在研究一种聪明的方法来实现它。你不怕它会让你的应用程序受到CSRF攻击吗?