为什么无法在Symfony的不安全区域中清除会话?

分形

我已经实现了Symfony的安全组件,如下所示:

$app['security.firewalls'] = array(
    'unsecured_area' => array(
        pattern' => new RequestMatcher('^/log(in|out).*', null, 'GET')
     )
     , 'secured_area' => array(
        'pattern' => '.*',
        'edir' => true,
        'users' => $app['security.user_provider.custom'],
        'switch_user' => array('parameter' => '_switch_user', 'role' => 'ROLE_ALLOWED_TO_SWITCH')
    )
);

当我调用注销路由时,我只是使会话无效。

据我了解,安全上下文存储在会话中,注销我的用户应该就足够了。但是他没有注销。

如果我更新防火墙以将注销路由放入安全区域,则$session->invalidate()工作正常,用户已注销...

为什么在不安全的区域不起作用?不安全的区域并不意味着没有会话的区域,不是吗?

蓝塔斯马尼亚语

很简单,但是,在不安全的区域中,即使Symfony2的活动会话未填充用户凭据,它也会使用其所谓的AnonymousToken。

因此,您的用户无法登录,因为他不处于登录状态,用户信息不在令牌或会话中。

希望能有所帮助

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章