Php Silex框架-用户始终是匿名的

Php Silex框架-用户始终是匿名的,php,silex,hhvm,Php,Silex,Hhvm,我已向我的$app注册了一个基于MySQL的UserProvider,如中所述: 我已经成功设置了使用sha1的密码,到目前为止,一切正常 $app['security.encoder.digest'] = $app->share(function ($app) { // use the sha1 algorithm // don't base64 encode the password // use only 1 iteration return new

我已向我的$app注册了一个基于MySQL的UserProvider,如中所述:

我已经成功设置了使用sha1的密码,到目前为止,一切正常

$app['security.encoder.digest'] = $app->share(function ($app) {
    // use the sha1 algorithm
    // don't base64 encode the password
    // use only 1 iteration
    return new MessageDigestPasswordEncoder('sha1', false, 1);
});
我的问题是:用户会根据需要进行身份验证或拒绝,如果身份验证成功,会重定向到默认路由,但不会保留登录。等式。如果我随后返回到我的/登录表单,并打印用户令牌,我将得到:

AnonymousToken(user="anon.", authenticated=true, roles="")
不管我看起来在做什么。任何帮助都将不胜感激:我试图确保我的会话在“之前”控制器中启动:它们是

$app['session']->start();
我应该提到的是,我运行的是HHVM,而不是“香草PHP”。它应该大致对应于PHP5.5,其他一切似乎都正常

提前谢谢你的帮助


编辑:HHVM和使用中的Silex版本似乎有问题,我现在向Silex团队报告。同样的代码在php5 fpm上也可以正常工作。

当在HHVM上使用时,这个问题只与Silex的本机会话处理程序有关

作为一种解决方法,我建议使用PdoSessionHandler

$app['session.db_options'] = array(
    'db_table'      => 'session',
    'db_id_col'     => 'session_id',
    'db_data_col'   => 'session_value',
    'db_time_col'   => 'session_time',
);

$app['session.storage.handler'] = $app->share(function () use ($app) {
    return new PdoSessionHandler(
        $app['db']->getWrappedConnection(),
        $app['session.db_options'],
        $app['session.storage.options']
    );
});

完整的代码可以在这里找到:

我有完全相同的问题,你找到解决方案了吗?请参阅我的第二篇文章。这是一个(现在已知的)Silex/HHVM错误。我的问题是会话处理程序。通过使用数据库会话处理程序,我可以使此功能重新工作。