-1

我正在尝试在 Symfony 中创建一个 EventListener 来侦听主请求,并且该请求是否试图访问防火墙后面的路由以在会话中设置标志。例如,如果请求是针对防火墙的 /admin 则 EventListener 应该在会话中创建一个标志。我能想到的唯一方法是注入用户和 AccessDecisionManager,并在角色设置为 IS_AUTHENTICATED_ANONYMOUSLY 时检查用户是否有权访问该页面,并检查用户是否已完全通过身份验证。类似于:

if (!$uthorizationChecker->isGranted('IS_AUTHENTICATED_ANONYMOUSLY') && is  $authorizationChecker->isGranted('IS_AUTHENTICATED_FULLY')) {
        // the user can't access the resources when ANONYMOUS
       // this must be a secured resource
    }

有没有更优雅的方法来实现这一点?必须有一种我缺少的方法,它只是告诉您请求正在尝试或已访问受保护的页面。可能监听一些防火墙事件也是一种选择?

4

1 回答 1

0

https://symfony.com/doc/current/security.html

查看访问控制部分。您基本上可以根据某个角色指定需要进行身份验证的路由。然后对于所有这些路由,您只需设置标志而无需进行此检查,因为默认情况下它不会让未经授权的用户进入

于 2018-04-12T20:23:58.160 回答