2015-02-09 135 views
4

我是Symfony2的新手。我阅读文档,看到一些配置的登录表单 http://symfony.com/doc/current/cookbook/security/form_login_setup.htmlSymfony2身份验证方法在同一个防火墙中

# app/config/security.yml 
security: 
    # ... 

    firewalls: 
     default: 
      anonymous: ~ 
      http_basic: ~ 
      form_login: 
       login_path: /login 
       check_path: /login_check 

我不明白为什么有2种安全方法http_basic和form_login在同一个防火墙?安全系统将使用哪种方法? http_basic或form_login或两者?它是多余的吗? 上面的一些问题看起来很愚蠢,但看起来symfony2安全组件文档很差。

回答

3

在旧Symfony文档有一个小尖:

当用户没有被认证,并且如果存在不止一个 认证机制,Symfony2的自动定义默认 入口点(在上述的例子,登录表单;但如果用户 发送带有错误凭证的Authorization HTTP标头,则Symfony2 将使用HTTP基本入口点)。

但是,在下一个版本文档重新组织时,它减少了,我不知道为什么。

因此,我在symfony-docs知识库GitHub中打开了一个new issue,并提出了恢复提示的建议。

@WouterJ的回答报价:

的代码似乎在 引用的段落描述不再起作用。它似乎总是使用表单登录,除非有 是没有身份验证头发送和HTTP基本凭据是 正确。

所以你是对的 - 它不是微不足道的。如果您想知道结论,请遵循这个问题。

+0

我知道http_basic和form_login,但我很困惑于食谱中的配置。为什么在同一个防火墙中有两种安全方法?如果我们有form_login,http_basic是多余的? – Geany 2015-02-09 09:06:28

+1

@Geany:你说得对 - 找到答案并不是微不足道的。我将发布一个问题到'Symfony'文档。 – chapay 2015-02-10 12:47:20

+1

好的,谢谢@Andrey。现在我想挖掘安全组件来构建自定义身份验证,但它似乎是安全组件,并且捆绑了很少的信息并且很难理解。 – Geany 2015-02-10 12:58:13