早上的人,
主要是我要确保对以/api/internal
开头的网址进行所有调用。
以此路径开头的所有端点仅用于内部调用,例如在ajax搜索框中。所以当我错了时我就是对的,但我认为通过host
access_roles
定义来保证这一点是个好主意
我尝试使用以下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个不同的部分:
感谢您提供的任何帮助。
最高
答案 0 :(得分:0)
为了保护主机安全,请使用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