我知道这个问题被讨论了很多次,但我找到了一些解决方案,我不确定这是否是最好和最有效的方法。
我的问题:我正在使用 fosuserbundle 来处理用户身份验证,并且我还想防止显示登录用户的登录、密码重置等表单。下面我提出一些方法:
- 第一个(已经实现)基于内核事件,有代码 https://gist.github.com/walmen/871c13014b80c6a3d05d
- 我的同事基于方法重载提到的第二种方法(删除每个方法中的侦听器和重复代码,这些方法有一些不应该为登录用户显示的逻辑)
- 编写自定义注解,即@RequireAnonymous
正如我之前提到的,我已经实现了第一种方法,但我不确定它是否是最好和最有效的解决方案(每个请求都会调用这个监听器 - 它对应用程序的负载不是太重?监听器如何影响应用程序,如果他们?)。
第二种方法当然是最简单的方法,但是……代码重复听起来不太好。
最后一个可能是最好的,但如果我们看一下这个例子https://gist.github.com/cystbear/1391850我们会发现在任何控制器调用期间调用事件也存在问题。
有什么建议或其他想法有很好的论据和解释吗?