Bri*_*ian 5 cas single-sign-on symfony
我正在为Symfony 2创建一个身份验证提供程序,允许用户使用名为CAS的单点登录协议进行身份验证.
我的身份验证侦听器从AbstractAuthenticationListener扩展.其中一个配置参数是check_path,它是触发身份验证侦听器对请求进行身份验证的路径/路由.
我需要check_path在构建CAS服务器的URL时(因此CAS服务器知道将用户返回到哪里),这很容易,因为我的自定义入口点类在我的安全工厂中构建时传递了配置数组.
困难的部分是我还需要check_path在侦听器之外,就像在Authentication Provider类中进行身份验证时一样.我需要它,因为当CAS服务器将用户发送回应用程序时,它会传递必须经过验证的"票证"参数.为了验证它,我向CAS服务器发送一个curl请求,该服务器必须包含票证以及check_path使用的原始票据.
正如写的那样,我意识到当我进入身份验证提供程序时,我可以获取页面请求的当前URL(因为check_path它无论如何都会触发它),但这似乎是关闭的,我宁愿直接获取配置值重新构建服务URL.当我想在check_path其他地方使用它时,它也没有帮助,比如在构建CAS服务器的注销URL时也需要check_path.
编辑:该createAuthProvider方法AbstractFactory是通过双方的配置和容器,但我不能改变我的任何服务,在这里,因为他们还没有容器的一部分.也许如果我有办法在加载服务后添加编译器传递并以某种方式访问侦听器配置?
小智 0
您可以将 check_path 作为参数传递给您的侦听器吗?
如果它在您的配置或参数文件中定义,您可以将其传递给您的侦听器,如下所示:
your_authentication_listener:
class: YourBundle\Listener\AuthenticationListener
arguments: ['%check_path%']
tags:
...
Run Code Online (Sandbox Code Playgroud)
(如果我理解正确的话。)
| 归档时间: |
|
| 查看次数: |
760 次 |
| 最近记录: |