我一直按照Symfony Book 中的这个教程来管理我的用户。
现在,我想在登录成功或有人试图访问禁止区域后设置一条闪烁消息。
我的理解是身份验证和授权不在控制器内部管理。结果,我不知道在哪里放置我的代码以显示简单的“抱歉,您未连接”消息。
我一直按照Symfony Book 中的这个教程来管理我的用户。
现在,我想在登录成功或有人试图访问禁止区域后设置一条闪烁消息。
我的理解是身份验证和授权不在控制器内部管理。结果,我不知道在哪里放置我的代码以显示简单的“抱歉,您未连接”消息。
您可以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...
}
您可以在此处找到更多信息。
显示一条简单的消息需要一些时间和一些编码。如果你想通过 Symfony 的方式来做,你应该先看看这个安全配置,尤其是这些:
entry_point(在防火墙下) - 通常在用户尝试访问安全页面时将其重定向到登录页面。您可以在此处设置闪信。success_handler在form_login(如果您正在使用它)下显示您的成功登录消息success_handler在下方logout显示您的注销消息一些参考资料: