Набор Symfony 3 Nelmio cors обеспечивает правильное происхождение

Я хочу предоставить ограниченный доступ, разрешить доступ к моему успокоительному API только по некоторому адресу, я использовал symfony и nelmio cors bundle.

это мой конфиг из документации:

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,

помогите пожалуйста как заблокировать другой адрес помимо разрешенных адресов?

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-адресов или даже диапазоны. Смотрите официальную страницу кулинарной книги для подробного объяснения.

Другие вопросы по тегам