【问题标题】:Silex Framework - User is always anonymousSilex 框架 - 用户始终是匿名的
【发布时间】:2014-09-15 23:15:37
【问题描述】:

我已经在我的 $app 中注册了一个基于 MySQL 的 UserProvider,如下所述: http://www.bubblecode.net/en/2012/08/28/mysql-authentication-in-silex-the-php-micro-framework/

我已成功设置密码以使用 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);
});

我的问题是:用户被适当地认证或拒绝,在认证成功的情况下重定向到默认路由,但不保留登录。方程。如果我然后返回我的 /login 表单并打印用户令牌,我会得到:

AnonymousToken(user="anon.", authenticated=true, roles="")

不管我做什么。任何帮助将不胜感激:我尝试确保我的会话是在“之前”控制器中启动的:它们是。

$app['session']->start();

我应该提到我正在运行 HHVM 而不是“vanilla PHP”。它应该大致对应于 PHP 5.5,其他一切似乎都可以工作。

提前感谢您的帮助。

编辑:这似乎是 HHVM 和正在使用的 Silex 版本的问题,我现在向 Silex 团队报告。相同的代码在 php5-fpm 上也能正常工作。

【问题讨论】:

  • 我也有同样的问题,你找到解决办法了吗?
  • 见我的第二篇文章。这是一个(现在已知的)Silex/HHVM 错误。对我来说,问题在于会话处理程序。使用数据库会话处理程序让我可以再次使用此功能。

标签: php silex hhvm


【解决方案1】:

该问题仅与在 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']
    );
});

完整的代码在这里:http://silex.sensiolabs.org/doc/cookbook/session_storage.html

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-10-08
    • 2021-09-26
    • 2018-05-21
    • 1970-01-01
    • 1970-01-01
    • 2014-12-02
    • 1970-01-01
    • 2019-06-07
    相关资源
    最近更新 更多