我正在努力管理用户对我网站上某些页面的访问。我有一种完全认证的用户(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