【问题标题】:How does Symfony catch the check_pathSymfony 如何捕获 check_path
【发布时间】:2015-04-08 09:23:38
【问题描述】:

编辑:我已经用 symfony 设置了登录表单,并且授权工作正常。但想更深入地了解 symfony 的安全包是如何管理它的。

我想学习/了解 symfony 安全处理身份验证的方式。如果到目前为止我理解得很好,那么在 security.yml 中指定的 URL “/login_path” 在 check_path 行中会触发 Symfony 中的身份验证:

然后控制器/监听器/服务通过变量 POST["_username"] 和 POST["_password"] 从 login_form 获取用户名和密码。

我想看看 Symfony 是如何处理这个问题的。我应该查看 Symfony 的 Security 文件夹 中的哪些文件?

有人能解释一下它是如何工作的吗? 一些监听器是否捕获了 URL,然后将其传输到 Symfony 中的某个控制器。 (我只是想看看就明白了)

提前致谢。

【问题讨论】:

  • 你为什么不安装 symfony 并用你的 IDE 完成它?在我看来,安全组件是最复杂的组件。在 symfony 中,几乎总是有一个非常抽象的底层系统实现和一些具体的实现。您必须选择要分析的层。
  • 我已经安装了 Symfony 并且确实需要通过它。但是我想也许有人可以告诉我身份验证在 Symfony 中是如何工作的……if 的一般方面。 (不是配置方面,我已经用 symfony 实现了 auth. 并且效果很好)
  • 有一些身份验证侦听器会尝试提取任何类型的登录数据。默认是尝试从请求对象中获取_username_password 然后使用身份验证管理器生成身份验证令牌的侦听器。 symfony.com/doc/current/components/security/authentication.html
  • 好的,谢谢你的链接。还有一个问题:我只想看看管理在 URL 中设置 check_path 时触发的侦听器的文件
  • 抽象监听器是\Symfony\Component\Security\Http\Firewall\AbstractAuthenticationListener,其受保护的requiresAuthentication()方法使用\Symfony\Component\Security\Http\HttpUtils::checkRequestPath检查check_path是否在url中。有两种扩展它的实现:\Symfony\Component\Security\Http\Firewall\SimpleFormAuthenticationListener\Symfony\Component\Security\Http\Firewall\UsernamePasswordFormAuthenticationListener

标签: symfony authentication login


【解决方案1】:

没有可以查看的单个文件。 Symfony 中的安全性分为多个方面,例如身份验证、授权、用户提供程序……

阅读手册,那里解释得很好。但是,是的,这真的很复杂。 http://symfony.com/doc/current/book/security.html

基本流程如下所示: - 防火墙规则决定是否允许访问并且需要身份验证 - 令牌由配置的侦听器之一生成 - 身份验证提供者验证令牌 - 从配置的用户提供程序加载用户

【讨论】:

  • 感谢您的回答,但我实际上使用 Symfony 设置了身份验证(我知道如何去做,而且效果很好)。我的问题更多是关于它在后面是如何工作的......然后你能告诉我哪个文件知道check_path已被要求生成(我猜它是一个监听器,但我不确定)
猜你喜欢
  • 2018-02-01
  • 1970-01-01
  • 2021-06-02
  • 1970-01-01
  • 1970-01-01
  • 2015-04-09
  • 2020-07-29
  • 2014-10-20
  • 1970-01-01
相关资源
最近更新 更多