Ниже мой файл security.yml, в котором 2 метода отлично работают как незащищенные. Но api_slots не работает как незащищенный метод. Я не знаю, как мне нужно определять имя объекта метода в security.yml, например имя метода getSlotsAction, и я создал его объект, например api_slots, потому что для unsecureListAction метод api_doctors-list используется и отлично работает по желанию.
security:
encoders:
AppBundle\Entity\BaseUser:
algorithm: bcrypt
cost: 12
role_hierarchy:
ROLE_USER: ROLE_USER
ROLE_ADMIN: [ROLE_USER, ROLE_ALLOWED_TO_SWITCH]
providers:
admin:
entity:
class: AppBundle:AdminUser
property: email
api:
entity:
class: AppBundle:BaseUser
property: authToken
firewalls:
dev:
pattern: ^/(_(profiler|wdt)|css|images|js)/
security: false
api_slots:
pattern: ^/api/slots$
methods: [GET]
security: false
anonymous: true
api_new_register:
pattern: ^/api/users$
methods: [POST]
security: false
anonymous: true
api_doctors_list:
pattern: ^/api/doctors$
methods: [GET]
security: false
anonymous: true
api_area:
pattern: ^/api
provider: api
user_checker: psyma.security.app_user.checker
guard:
authenticator: psyma.security.token_authenticator
stateless: true
anonymous: false
logout:
path: admin_logout
main:
pattern: ^/
anonymous: ~
access_control:
- { path: ^/admin/login, roles: IS_AUTHENTICATED_ANONYMOUSLY, requires_channel: "%requires_channel%" }
- { path: ^/admin, roles: ROLE_ADMIN, requires_channel: "%requires_channel%" }
- { path: ^/api, roles: IS_AUTHENTICATED_ANONYMOUSLY, requires_channel: "%requires_channel%" }
- { path: ^/, roles: IS_AUTHENTICATED_ANONYMOUSLY, requires_channel: "%requires_channel%" }
Вот имена моих методов для трех незащищенных объектов метода:
Для api_doctors_list
/**
* @Route("")
* @Method("GET")
*/
public function unsecureListAction()
Для api_new_register
/**
* @param Request $request
*
* @return JsonResponse
* @Route("/users")
* @Method("POST")
*/
public function patientRegistrationAction(Request $request)
и для api_slots
/**
* Class SlotController.
*
* @Route("/slots")
*/
class SlotController extends JsonController
{
/**
* @Route("")
* @Method("GET")
*
* @param Request $request
*
* @return JsonResponse
*/
//@Security("has_role('ROLE_DOCTORUSER') or has_role('ROLE_PATIENTUSER') ")
public function getSlotsAction(Request $request)
Объект api_slots не дает прямого доступа к методу getSlotsAction, он по-прежнему требует api_key, это то, что я имею в виду, api_slots не работает. К тому же я не строил его с нуля.




Версия Symfony? Уверен, что вы не используете 1.4. Может 2,8? Отладка консоли: маршрутизатор показывает ожидаемые маршруты? Наличие такого большого количества брандмауэров - это немного необычно. Обычно для такого рода вещей вы используете контроль доступа. И когда вы говорите, что api_slots не работает, что это значит? Маршрут не найден?