周末后我进入了我的网站主页,我看到自己登录主页,主页不是登录用户!通常它工作正常,我不知道发生了什么,如果我退出并再次登录它再次正常工作。
它几乎没有问题:
我以登录用户的身份进入了我的主页,即使我在控制器中明确说明:
if ($this->get('security.authorization_checker')->isGranted('IS_AUTHENTICATED_FULLY')) {
return $this->redirectToRoute('authorization');
}
所以我应该被重定向到页面授权,但我不是。
我可以看到" HOME"导航中的链接,但在我的菜单构建器代码中,我在显示之前检查用户是否为IS_AUTHENTICATED_FULLY
:
if ($securityContext->getToken()) {
if(!$securityContext->isGranted('IS_AUTHENTICATED_FULLY')) {
$menu->addChild('HOME', array(
'route' => 'homepage',
'attributes' => array(
'class' => 'nav-li'
)
));
}
}
有时似乎IS_AUTHENTICATED_FULLY
无法检查用户是否已登录。
P.S。我在星期五使用remember_me
表单登录网站,不确定几天是否与它有关。
以下是我的防火墙(我在不同页面中有多个登录表单):
firewalls:
about:
pattern: ^/about
anonymous: ~
provider: main
context: primary_auth
form_login:
login_path: /about
check_path: /about/login_check
default_target_path: /authorization
logout:
path: /logout
target: homepage
remember_me:
secret: '%secret%'
lifetime: 31536000
programs:
pattern: ^/programs
anonymous: ~
provider: main
context: primary_auth
form_login:
login_path: /programs
check_path: /programs/login_check
default_target_path: /authorization
logout:
path: /logout
target: homepage
remember_me:
secret: '%secret%'
lifetime: 31536000
contacts:
pattern: ^/contacts
anonymous: ~
provider: main
context: primary_auth
form_login:
login_path: /contacts
check_path: /contacts/login_check
default_target_path: /authorization
logout:
path: /logout
target: homepage
remember_me:
secret: '%secret%'
lifetime: 31536000
main:
pattern: ^
anonymous: ~
provider: main
context: primary_auth
form_login:
login_path: /
check_path: /login_check
default_target_path: /authorization
logout:
path: /logout
target: homepage
remember_me:
secret: '%secret%'
lifetime: 31536000
oauth:
resource_owners:
trainee_facebook: /login/check-facebook
trainee_linkedin: /login/check-trainee-linkedin
trainee_xing: /login/check-trainee-xing
company_linkedin: /login/check-company-linkedin
company_xing: /login/check-company-xing
university_linkedin: /login/check-university-linkedin
university_xing: /login/check-university-xing
login_path: /
use_forward: false
failure_path: /failure-path
default_target_path: /authorization
oauth_user_provider:
service: my_custom_user_provider
更新
突然而不是IS_AUTHENTICATED_FULLY
,IS_AUTHENTICATED_REMEMBERED
工作正常,我不明白为什么!有没有解释为什么用户会在当时失去IS_AUTHENTICATED_FULLY
角色?
答案 0 :(得分:2)
您的会话可能已过期,并且您使用“记住我”功能再次自动进行身份验证。
如文档(http://symfony.com/doc/current/security.html#checking-to-see-if-a-user-is-logged-in-is-authenticated-fully)中所述,通过“记住我”功能进行身份验证的用户将不具有IS_AUTHENTICATED_FULLY
角色。
在这种情况下,您应该检查角色IS_AUTHENTICATED_REMEMBERED
,该角色也会授予“完全”身份验证的用户。
我确实理解命名令人困惑,但您可以将IS_AUTHENTICATED_REMEMBERED
视为“完全认证或记住我”。