2017-05-05 52 views
1

我目前有下面的代碼,這幾乎做我想要的。 只有幾件事我不明白。Symfony安全access_control語法

每條路徑前的^ /是什麼?

^/login後的$是什麼?

爲什麼我無法訪問頁面時會重定向到登錄頁面?我在哪裏設置或更改此?

是否有一個簡單的方法來授予訪問我的首頁(/),同時要求用戶登錄訪問任何其他頁面(登錄/註冊頁面除外)?

我應該使用IS_AUTHENTICATED_FULLY還是ROLE_USER?字符串的

無法找到關於這個問題無論是任何明確的信息...

​​

回答

3

關於^和$

^=字符串的開始 $ =結束

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 } 
+0

似乎工作,雖然我不完全理解爲什麼需要1號線或什麼$不正是 –

+0

末的平均$「結尾」,在這種情況下(^/$)它只表示根路徑。 – jeremy