我正在努力管理用戶對我網站上某些頁面的訪問。我有一種完全認證的用戶(role: ROLE_MEMBER
,根據ROLE_USER
),當然也有匿名用戶。管理用戶對Symfony2頁面的訪問
比方說,我在網站上有兩頁(/index
,/account
),兩者都用secure: true
。假設/index
要求role: IS_AUTHENTICATED_ANONYMOUSLY
和/account
要求role: IS_AUTHENTICATED_FULLY
(對於ROLE_MEMBER
)。
我想爲兩個頁面上的登錄成員顯示特殊的「帳戶菜單」,因此在模板中我檢查is_granted('ROLE_MEMBER')
。
當然,這對/account
很有用。問題,當成員導航到/index
(這是「匿名」頁面)功能is_granted('ROLE_MEMBER')
返回0
,和is_granted('IS_AUTHENTICATED_ANONYMOUSLY')
返回1
。當會員再次導航到/account
時,所有內容都不會重新輸入密碼(這意味着會員仍未註銷)。
所以,問題是如何檢測哪些會員在/index
頁面模板內登錄用戶?
已更新。 @ alessandro1997這裏是我的app/config/security.yml
配置
security:
encoders:
AG\MemberBundle\Entity\Member:
id: member_saltedpassword_encoder
role_hierarchy:
ROLE_MEMBER: ROLE_USER
ROLE_SUPER_ADMIN: [ROLE_USER, ROLE_MEMBER, ROLE_ALLOWED_TO_SWITCH]
providers:
member_db:
entity: { class: AGMemberBundle:Member, property: email }
firewalls:
members:
pattern: ^/account
security: true
form_login:
login_path: /account/login
check_path: /account/login/check
post_only: true
username_parameter: _email
password_parameter: _password
default_target_path: /account/
always_use_default_target_path: true
# csrf token options
csrf_parameter: _csrf_token
intention: authenticate
provider: member_db
logout:
path: /account/logout
target:/
remember_me:
key: "qwewqeqwerwxeweqweqwe"
lifetime: 3600
path: /
domain: ~ # Defaults to the current domain from $_SERVER
pages:
pattern: ^/
security: true
anonymous: ~
access_control:
- { path: ^/account, roles: IS_AUTHENTICATED_FULLY }
- { path: ^/, roles: IS_AUTHENTICATED_ANONYMOUSLY }
這就奇怪了......你能證明你的** ** security.yml? –
@ alessandro1997我用'security.yml'更新了我的問題 – gakhov