我已经使用我的$ 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);
});
我的问题是:根据需要对用户进行身份验证或拒绝,并在成功进行身份验证时重定向到默认路由,但不保留登录。式。如果我然后返回我的/登录表单,并打印用户令牌,我得到:
AnonymousToken(user="anon.", authenticated=true, roles="")
无论我做什么。任何帮助将不胜感激:我尝试确保我的会话是在"之前"控制器:他们是。
$app['session']->start();
我应该提一下,我正在运行HHVM而不是" vanilla PHP"。它应该大致对应于PHP 5.5,其他一切似乎都有用。
提前感谢您的帮助。
编辑:它似乎是HHVM和正在使用的Silex版本的问题,我现在向Silex团队报告。使用php5-fpm,相同的代码可以正常工作。
答案 0 :(得分: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