升级Symfony 2后,自定义身份验证提供程序不起作用

时间:2013-05-03 12:58:14

标签: php symfony soap ws-security soapheader

很长一段时间我使用Symfony 2.0版本并且我的自定义身份验证提供程序正常工作。现在我决定升级到最新版本。第一步是升级到2.1,然后是2.2等等。 但我在第一步到第2.1步时卡住了。升级成功完成,但用户身份验证不起作用。每次登录后我都会重定向回登录表单。

我完全按照文档创建了用户提供程序和身份验证提供程序: http://symfony.com/doc/2.0/cookbook/security/custom_authentication_provider.html http://symfony.com/doc/2.0/cookbook/security/custom_provider.html

我将每个版本更改为添加equatableInterface并将equals()更改为UserProvider中的isEqualTo()方法。

在AuthenticationProvider中,我将Factory配置移到了bundle类。

在2.1版中有许多与安全性相关的更改。 (https://github.com/symfony/symfony/blob/master/UPGRADE-2.1.md) 我编辑的每一项更改。

我的令牌持久存在于控制器中,如下所示:

$authenticatedToken = new UsernamePasswordToken($user, null, 'back_area', array($result->roles));
$request = $this->getRequest();
$session = $request->getSession();
$session->set('_security_back_area',  $authenticatedToken->serialize());

$this->get('security.context')->setToken($authenticatedToken);

and security.yml:

providers:
    users:
      id: login_user_provider
back_area:
    pattern:  ^/admin
    provider: users
    form_login:
        check_path: _security_check_back
        login_path: _security_login_back
    logout:
        path:   _security_logout_back
        Mytarget: /admin/

的routing.yml

_security_login_back:
    pattern:  /a/login
    defaults: { _controller: MyBackBundle:Default:login }

_security_check_back:
    pattern:  /a/login_check

_security_logout_back:
    pattern:  /admin/logout

在此持久化之后,如果我转储security.context,则存在持久令牌,但在页面重定向之后,令牌(在security.context中)为NULL。

0 个答案:

没有答案