php - 控制器中的 Symfony 3.4 $_SESSION
问题描述
我有一个在.php
文件中启动的应用程序。在这个文件中我做了一些工作,但最后我做了两件事,我生成一个值并保存$_SESSION
并重定向到其他路由:
该php
文件不在 Symfony 文件夹中:
<?php
session_start();
...Do some work
$_SESSION['token'] = 'some value';
header ("Location: new direction");
?>
重定向,重定向到 symfony 文件夹,并启动 symfony 部分到我的src/AppBundle/Controller/MainController
.
在此控制器中处理的第一个操作中,我需要访问 的值$_SESSION['token']
以在控制器操作中使用此值进行一些工作。这是控制器:
<?php
namespace AppBundle\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\Routing\Annotation\Route;
class MainController extends Controller
{
public function homepageAction(Request $request)
{
dump($_SESSION);
die;
...Some work
}
}
?>
这dump($_SESSION)
表明:
但我找不到我的$_SESSION['token']
我是否需要使用一些 Symfony 组件来访问控制器内的 PHP $_SESSION 值?
或者我如何$_SESSION['token']
在控制器中访问?
解决方案
最好的方法是创建接受令牌参数的路由,在会话中保存令牌参数,并重定向用户。
如果您需要为所有路由复制此行为,请在请求事件上使用侦听器。
编辑:有关我的答案的更多信息
第 1 步:设置您的代币值
第 2 步:重定向到接受令牌参数的 Symfony 路由
第 3 步:根据代币价值应用您自己的逻辑
<?php
namespace AppBundle\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\Routing\Annotation\Route;
use Symfony\Component\HttpFoundation\Session\SessionInterface;
/**
* @Route("/{token}", defaults={"token"=null})
*/
class MainController extends Controller
{
public function homepageAction(Request $request, SessionInterface $session, ?string $token)
{
if ($token) {
$session->set('token', $token);
}
...Some work
}
}
推荐阅读
- spring - 用于 int 值之间的 Spring Data MongoRepository
- java - 具有过期时间的 Redis 模板哈希键
- python - Django ORM 注释性能
- android - 反应原生方形徽标不显示完美
- reactjs - 在反应中创建应用程序时出错
- python - DataFrame MultiIndex - 按值查找列
- html - 在 html 表格中显示行而不是空单元格
- javascript - React Bootstrap ToggleButton 触发函数两次
- sql - 从 SQL Server 中的另一个表中获取最近的日期列值
- json - 如何使用添加或删除的数据合并/更新 kubernetes configMaps?