gpt4 book ai didi

Symfony2 : How to get Authentication Listener config values into another service?

转载 作者:行者123 更新时间:2023-12-03 17:48:59 26 4
gpt4 key购买 nike

我正在为 Symfony 2 创建一个身份验证提供程序,它允许用户使用名为 CAS 的单点登录协议(protocol)进行身份验证。 .

我的 认证监听器 延伸自 AbstractAuthenticationListener .配置参数之一是 check_path ,这是触发身份验证监听器对请求进行身份验证的路径/路由。

我需要check_path当我构造到 CAS 服务器的 URL 时(因此 CAS 服务器知道将用户返回到哪里),这很容易,因为我的自定义 入口点在我的安全性 中构造类时,会将配置数组传递给它工厂 .

困难的部分是我还需要check_path在监听器之外,例如在我的 内部进行身份验证期间身份验证提供者 类(class)。我需要它,因为当 CAS 服务器将用户发送回应用程序时,它会传递一个必须验证的“票证”参数。为了验证它,我向 CAS 服务器发送了一个 curl 请求,该请求必须包含票证以及原始的 check_path。那是用过的。

在写这篇文章时,我意识到当我在身份验证提供程序中时,我可以获得页面请求的当前 URL(因为它是 check_path 无论如何都会触发它),但这似乎不对,我宁愿得到直接配置值来重新构造服务 URL。当我想使用 check_path 时,它也无济于事。其他地方,比如在构造一个到 CAS 服务器的注销 URL 时,它也需要 check_path .

编辑: createAuthProvider AbstractFactory的方法传递了配置和容器,但我不能在这里修改我的任何服务,因为它们还不是容器的一部分。也许如果我有办法在加载我的服务并以某种方式访问​​监听器配置后添加编译器传递?

最佳答案

您可以将 check_path 作为参数传递给您的监听器吗?

如果它在您的配置或参数文件中定义,您可以将其传递给您的监听器,如下所示:

your_authentication_listener:
class: YourBundle\Listener\AuthenticationListener
arguments: ['%check_path%']
tags:
...

(如果我理解你正确的话。)

关于Symfony2 : How to get Authentication Listener config values into another service?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25899072/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com