Symfony security access_control语法

时间:2017-05-05 15:13:39

标签: symfony security fosuserbundle

我目前有以下代码,它几乎可以满足我的需求。 只有一些我不理解的事情。

每条路径前面的^ /是什么?

^ / ^后面的$是什么?

当我无法访问某个页面时,为什么会被重定向到登录页面?我在哪里设置或更改它?

是否有一种简单的方法可以授权访问我的首页(/),同时要求用户登录以访问任何其他页面(登录/注册页面除外)?

我应该使用IS_AUTHENTICATED_FULLY还是ROLE_USER?

无法找到有关该主题的任何明确信息......

access_control:
        - { path: ^/login$, role: IS_AUTHENTICATED_ANONYMOUSLY }
        - { path: ^/register, role: IS_AUTHENTICATED_ANONYMOUSLY }
        - { path: ^/resetting, role: IS_AUTHENTICATED_ANONYMOUSLY }
        - { path: ^/admin/, role: ROLE_ADMIN }
        - { path: ^/, role: IS_ATHENTICATED_FULLY }

1 个答案:

答案 0 :(得分:2)

关于^和$

^ =字符串的开头 $ =字符串结尾

https://en.wikipedia.org/wiki/Regular_expression#Delimiters

IS_AUTHENTICATED_FULLY或ROLE_USER: 你不能直接比较这两个。您可以完全进行身份验证,而不是角色用户。 IS_AUTHENTICATED_FULLY仅表示您未在此会话中通过remember_me机制登录,但主动输入了密码。 但是,它不会检查已授予登录用户的角色。

更多信息: http://symfony.com/doc/current/security.html#checking-to-see-if-a-user-is-logged-in-is-authenticated-fully

  

是否有一种简单的方法可以授权访问我的首页(/),同时要求用户登录以访问任何其他页面(登录/注册页面除外)?

尝试:

access_control:
    - { path: ^/$, role: IS_AUTHENTICATED_ANONYMOUSLY }
    - { path: ^/login$, role: IS_AUTHENTICATED_ANONYMOUSLY }
    - { path: ^/register, role: IS_AUTHENTICATED_ANONYMOUSLY }
    - { path: ^/resetting, role: IS_AUTHENTICATED_ANONYMOUSLY }
    - { path: ^/admin/, role: ROLE_ADMIN }
    - { path: ^/*, role: IS_AUTHENTICATED_FULLY }