6

我一直按照Symfony Book 中的这个教程来管理我的用户。

现在,我想在登录成功或有人试图访问禁止区域后设置一条闪烁消息。

我的理解是身份验证和授权不在控制器内部管理。结果,我不知道在哪里放置我的代码以显示简单的“抱歉,您未连接”消息。

4

2 回答 2

2

您可以SecurityContext从您的Controller. 因此,假设您的禁区需要一个角色SOME_ROLE,您可以执行以下操作:

if (!$this->get('security.context')->isGranted('SOME_ROLE')) {
    $this->get('session')->getFlashBag()->add('error', 'Access forbidden');
    // maybe return a RedirectResponse to another page the user can access...
}

请注意,SecurityContext自 Symfony 2.6 以来已弃用。它仍然可以工作,但如果你想学习如何适应未来的版本,你可以检查这个

至于用户登录/未登录时的消息,可以使用AuthorizationChecker,与上一个非常相似:

if (!$this->get('security.authorization_checker')->isGranted('IS_AUTHENTICATED_FULLY')) {
    // Add flash message here...
}

您可以在此处找到更多信息。

于 2015-06-06T12:08:21.620 回答
2

显示一条简单的消息需要一些时间和一些编码。如果你想通过 Symfony 的方式来做,你应该先看看这个安全配置,尤其是这些:

  1. entry_point(在防火墙下) - 通常在用户尝试访问安全页面时将其重定向到登录页面。您可以在此处设置闪信。
  2. success_handlerform_login(如果您正在使用它)下显示您的成功登录消息
  3. success_handler在下方logout显示您的注销消息

一些参考资料:

于 2015-06-06T14:31:54.173 回答