无法在Symfony 4中的构造函数内重定向

时间:2018-10-01 14:26:18

标签: php redirect login router symfony4

我正在处理一个未经服务和授权构思的客户端项目,因此用户可以登录并创建用户会话。

我必须在基本的“ 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访问退出​​路径,则该路径将起作用。

谢谢

1 个答案:

答案 0 :(得分:0)

首先,如果要访问会话,则应将其作为参数传递并获得自动装配的好处。其次,这不应该在控制器的构造函数中完成。

第三,这类似于symfony的安全模块的情况。正确配置后,Symfony在默认情况下将恢复使用定义为/logout路由

的任何路由的logout路由

因此,您需要做的是在security.yaml中定义防火墙,并在access_control中定义应该在防火墙下的路径

检查此以获取更多线索https://symfony.com/doc/current/security/form_login_setup.html

相关问题