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