symfony AccessDeniedException всегда перенаправлять на страницу входа

Я не понимаю,

выдать новое AccessDeniedException (‘message’) всегда перенаправлять на страницу входа.

PS: я использую FOSUserBundle и здесь содержание security.yml:

security:
encoders:
ANDRY\UserBundle\Entity\User: sha512

role_hierarchy:
# Un admin hérite des droits d'auteur et de modérateur
# ROLE_ADMIN: [ROLE_AUTEUR, ROLE_MODERATEUR]
# On garde ce rôle superadmin, il nous resservira par la suite
# ROLE_SUPER_ADMIN: [ROLE_ADMIN, ROLE_ALLOWED_TO_SWITCH]
# ROLE_EMPLOYER: ROLE_SEEKER
ROLE_ADMIN: [ROLE_EMPLOYER, ROLE_SEEKER, ROLE_ALLOWED_TO_SWITCH]

providers:
main:
id: fos_user.user_provider.username

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

# main_login:
#     pattern: ^/%locale%/login$
#     anonymous: true

main:
pattern: ^/
anonymous: true
provider: main
form_login:
login_path: fos_user_security_login
check_path: fos_user_security_check
default_target_path: /%locale%
logout:
path: fos_user_security_logout
target: /%locale%
remember_me:
secret: %secret%

access_control:
#     - { path: ^/admin, roles: [ROLE_ADMIN, ROLE_SUPER_ADMIN] }

0

Решение

По умолчанию Symfony перенаправляет неаутентифицированный запрос на вход в систему из конфигурации брандмауэра. Чтобы изменить это, вы должны создать свой собственный обработчик отказа в доступе, который реализует AccessDeniedHandlerInterface и настроить брандмауэр для его использования.

class AccessDeniedHandler implements AccessDeniedHandlerInterface
{
public function handle(Request $request, AccessDeniedException $accessDeniedException)
{
// ...

return new Response($content, 403);
}
}

Настройте его как службу и измените конфигурацию брандмауэра в security.yml

firewalls:
default:
...
access_denied_handler: you_access_denied_handler_service
1

Другие решения

Других решений пока нет …