我正在处理一个未经服务和授权构思的客户端项目,因此用户可以登录并创建用户会话。
我必须在基本的“ UserboardController”中控制访问。
我在任何方法之前都有一个构造函数:
class UserboardController extends Controller
{
public function __construct() {
$session = new Session();
$uSession = $session->get('user');
if (!isset($uSession)){
return $this->redirectToRoute('logout');
}
}
我尝试了很多方法来重定向并始终收到此错误:
Call to a member function get() on null
Symfony将向我显示来自ControllerTrait.php
的redirectToRoute内部的另外两条轨迹:
return $this->redirect($this->generateUrl($route, $parameters), $status);
和
return $this->container->get('router')->generate($route, $parameters, $referenceType);
任何想法我都可以简单地将用户重定向到注销路线吗? 这是重要的一步,因为注销方法将在注销并重定向到登录表单之前基于cookie执行其他操作。
已定义退出路径,并且如果用户从URL访问退出路径,则该路径将起作用。
谢谢
答案 0 :(得分:0)
首先,如果要访问会话,则应将其作为参数传递并获得自动装配的好处。其次,这不应该在控制器的构造函数中完成。
第三,这类似于symfony的安全模块的情况。正确配置后,Symfony在默认情况下将恢复使用定义为/logout
路由
logout
路由
因此,您需要做的是在security.yaml中定义防火墙,并在access_control中定义应该在防火墙下的路径
检查此以获取更多线索https://symfony.com/doc/current/security/form_login_setup.html