Symfony 安全 access_control 语法

Symfony security access_control syntax

我目前有以下代码,它几乎可以满足我的要求。 就是有几点不明白。

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

^/login 后面的 $ 是什么?

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

有没有一种简单的方法可以授予对我的首页 (/) 的访问权限,同时要求用户登录才能访问任何其他页面(login/register 页面除外)?

我应该使用 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 }

关于 ^ 和 $

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

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

Is there an easy way to grant access to my frontpage (/) while requiring users to be logged in to access any other page (except for the login/register pages)?

尝试:

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 }