为什么Symfony不使用表单来处理安全组件登录?

时间:2017-12-20 18:54:52

标签: php symfony symfony-forms symfony-security

从描述如何设置使用Symfony Security组件的登录表单的文档https://symfony.com/doc/current/security/form_login_setup.html,我很惊讶看不到使用Symfony Form组件。

他们以纯HTML形式呈现表单,表单由某些魔术处理,由安全组件处理(并打破应该处理HTTP请求的Controller的概念)。

是否有特殊原因不在此处使用表单类型? (还有一个控制器)。

2 个答案:

答案 0 :(得分:1)

Symfony安全性不使用表单,因为表单适用于提交的数据,并且大多数身份验证方法都是使用表单无法访问的HTTP标头完成的。

安全组件有两个角色:身份验证和授权。你在这个问题中提到了身份验证。

身份验证它比仅仅处理控制器中的表单更复杂。

只有一种身份验证方法意味着在symfony中提交表单:UsernamePasswordToken,甚至可以通过标头作为http基本/摘要身份验证提交。

登录/身份验证/授权的其他方式是通过记住我的令牌,会话,oauth令牌,Json Web令牌,SAML等。

更灵活的方法是只使用基于事件的身份验证系统,尽管这会增加使用Symfony Guard在Symfony 3中解决的系统的复杂性。

enter image description here

https://symfony.com/doc/2.0/book/security.html

答案 1 :(得分:0)

我终于编写了自己的处理Symfony表单的GuardAuthenticator(扩展了Symfony \ Component \ Security \ Guard \ Authenticator \ AbstractFormLoginAuthenticator):

Symfony form guard authenticator

这项工作就像一个魅力!设计团队可以轻松使用表格。