Я хочу предоставить ограниченный доступ, разрешить доступ к моему успокоительному API только по некоторому адресу, я использую Symfony и Nelmio Cors.
это мой конфиг из документации:
nelmio_cors:
defaults:
allow_credentials: false
allow_origin: []
allow_headers: []
allow_methods: []
expose_headers: []
max_age: 0
hosts: []
origin_regex: false
forced_allow_origin_value: ~
paths:
'^/api':
allow_origin: ['192.0.74.122']
allow_headers: ['X-Custom-Auth']
allow_methods: ['POST', 'PUT', 'DELETE']
max_age: 3600
'^/':
origin_regex: true
allow_origin: ['^http://localhost:[0-9]+']
allow_headers: ['X-Custom-Auth']
allow_methods: ['POST', 'PUT', 'GET', 'DELETE']
max_age: 3600
hosts: ['^api\.']
Я хочу установить 192.0.74.122
разрешен только доступ к ^/api
а также ^/api/*
, но когда я тестирую вызовы ajax в браузере, почтальоне и jquery, это может быть от localhost или 127.0.0.1
,
помогите пожалуйста как заблокировать другой адрес помимо разрешенных адресов?
Пакет Nelmio cors предназначен для установки заголовков CORS, а не для блокировки или ограничения доступа к определенным маршрутам.
использование access_control
записи в вашем security.yml
для этого.
Пример (не тестировался):
# config/security.yml
security:
# ...
access_control:
- { path: ^/api, role: IS_AUTHENTICATED_ANONYMOUSLY, ip: 192.0.74.122 }
- { path: ^/api, role: ROLE_NO_ACCESS }
Вы можете установить несколько IP-адресов или даже диапазоны. Увидеть официальная страница кулинарной книги для подробного объяснения.
Других решений пока нет …