【问题标题】:is there a way to add an event listener for a specific firewall?有没有办法为特定防火墙添加事件侦听器?
【发布时间】:2017-09-29 15:27:28
【问题描述】:

我有几个防火墙,例如 admin,main,我想在 admin 防火墙中添加一个事件侦听器,而不是 main,因为某些检查只能对 admin 防火墙进行,我知道我们可以像这篇文章所说的那样做How to Create a custom Authentication Provider

这篇文章是关于用户登录时的身份验证,但我的情况是用户已成功验证,并且需要为管理员防火墙后面的所有操作完成一些工作,而不是某个操作。所以这个事件监听器应该在用户登录后发生,并且它只发生在某个防火墙上,例如管理员。请问有什么办法吗?

【问题讨论】:

    标签: symfony


    【解决方案1】:

    您可以制作自己的监听器并添加以下代码:

    $token = $this->securityContext->getToken();
    $providerKey = $token->getProviderKey(); // secured_area / firewall name
    

    providerkey 是防火墙的名称。 欲了解更多信息:https://reformatcode.com/browse

    【讨论】:

    • 我猜这是 symfony 最新的新功能,请问你的版本是什么?
    • 我使用的是 v2.6.11 版本
    【解决方案2】:

    我最近遇到了与您类似的问题。由于 Symfony 的内部 FirewallListener 只有一个,因此您必须在侦听器中过滤防火墙名称。在你的情况下跳过除admin之外的所有内容。

    【讨论】:

    • 请问有代码吗?我在 github 中发现了这个问题,github.com/symfony/symfony/issues/14435,这是一种获取防火墙名称的方法,我现在可以获取防火墙名称,但我还需要侦听一个事件,该事件应该在用户成功通过身份验证时发送,SecurityEvents:: INTERACTIVE_LOGIN 对我的情况没有用,我认为每次对用户进行身份验证时都会发送它,但不知何故这不会发生
    猜你喜欢
    • 2015-07-08
    • 2011-07-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-29
    • 1970-01-01
    • 2022-01-10
    • 1970-01-01
    相关资源
    最近更新 更多