交响乐 3 | FOSUser 如果连接则阻止注册

Symfony 3 | FOSUser Block registration if connected

我正在使用 FOSUser,如果用户已经连接,我想 return 一个例外或简单地阻止访问注册。当我连接到 url 时,我仍然可以去 /register。

这是我的 access_control :

access_control:
        - { path: ^/register, role: IS_AUTHENTICATED_ANONYMOUSLY }

我可以覆盖注册控制器操作和 return 一个 AccessDeniedException 但我确信有更好的解决方案,也许 security.yml ?

如果你添加这个:

- { path: ^/register, role: ROLE_ADMIN }

然后使用:

php bin/console fos:user:promote user_name ROLE_ADMIN

将"user_name"添加到ROLE_ADMIN,然后其他用户将收到拒绝访问消息。

我终于找到了答案。我必须使用 Voters 来检查用户权限。

这是文档:http://symfony.com/doc/current/cookbook/security/voters.html

这里有一个很好的例子:http://henrik.bjrnskov.dk/symfony2-anonymous-users-access/

这就是我所拥有的:

- { path: ^/register, role: IS_ANONYMOUS }