【发布时间】: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