【问题标题】:Symfony access_control not applied 'per-host' ruleSymfony access_control 未应用“每主机”规则
【发布时间】:2017-12-13 21:35:03
【问题描述】:

早安,

主要是我想保护以/api/internal 开头的网址的所有呼叫。 以此路径开头的所有端点仅用于内部调用,例如在 ajax 搜索框中。所以当我错的时候纠正我,但我认为通过access_roles中的host定义来保护它是个好主意

我用下面的 security.yml 试了一下

security:

role_hierarchy:
    ROLE_myproject_USER: ROLE_USER
    ROLE_TEAMMANAGER: ROLE_USER
    ROLE_ADMIN: [ROLE_TEAMMANAGER]

providers:
    dashboard_users:
        ldap:
            service: myproject.ldap
            # my ldap config

    custom_user_provider:
        id: myproject.factory.scale_user

firewalls:
    dev:
        pattern: ^/(_(profiler|wdt)|css|images|js)/
        security: false

    api_internal:
        pattern: ^/api/internal
        security: true
        host: myproject.dev

    api_doc:
        pattern: ^/api/doc
        security: false

    api_login:
        pattern:  ^/api/login
        stateless: true
        anonymous: true

    api:
        pattern: ^/api
        stateless: true
        provider: custom_user_provider
        guard:
            authenticators:
                - myproject.api_login_authenticator

    main:
        anonymous: ~
        form_login_ldap:
            login_path: myproject_login
            check_path: myproject_login
            service: myproject.ldap
            dn_string: 'Verbund\{username}'

        logout:
            path: myproject_logout
            target: /

access_control:
    - { path: ^/api/internal, host: myproject.dev }

但我得到这个错误:

InvalidConfigurationException in SecurityExtension.php line 481:
No authentication listener registered for firewall "api_internal".

附加信息:在这个项目中有 3 个不同的部分:

  1. /api/internal/**** - 只能从网站本身访问
  2. /api/ - 应该可以通过 REST 访问,通过 JWTToken 保护
  3. 网站本身 - 通过表单登录和 LDAP 保护

感谢您提供的任何帮助。

最大

【问题讨论】:

    标签: symfony security acl


    【解决方案1】:

    为了保护主机,请使用 access_control

    access_control:
    # require ROLE_ADMIN for /admin*
    - { path: ^/admin, roles: ROLE_ADMIN }
    

    路径是您想要的主机。

    为了保证子主机的安全使用

     - { path: ^/admin/*, roles: ROLE_ADMIN }
    

    移除除 main 和 dev 之外的其他防火墙!

    更多信息请参考http://symfony.com/doc/2.8/security.html

    【讨论】:

    • 所以你说我应该只有一个“dev”和一个“main”防火墙。但是其他定义的部分呢?同时我更新了我的问题
    猜你喜欢
    • 2019-07-26
    • 2014-10-08
    • 2017-07-23
    • 2021-09-27
    • 2017-06-28
    • 2018-10-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多