【发布时间】:2016-11-23 17:03:43
【问题描述】:
我正在尝试将网页的管理部分置于身份验证之下 我已经设法配置了用户和密码,但是当我使用 用户和各自的密码登录失败。我该如何调试呢? 可能是什么问题?
$app['security.encoder.digest'] = function ($app) {
// uses the password-compat encryption
return new BCryptPasswordEncoder(10);
};
$app['security.encoder_factory'] = function ($app) {
return new EncoderFactory(
array(
'Symfony\Component\Security\Core\User\UserInterface' => $app['security.encoder.digest']
)
);
};
$app->register(new Silex\Provider\SecurityServiceProvider(), array(
'security.firewalls' => array(
'admin' => array(
'pattern' => '^/admin',
'http' => true,
'users' => function () use ($app) {
$dbs = new \FMP\Service\DbService($app);
return new UserProvider($dbs->getDb(), $app['form.factory']);
}
)
)
));
我使用这个设置用户密码:
$encoder = $encoderFactory->getEncoder($user);
// compute the encoded password for foo
$password = $encoder->encodePassword($user->getPassword(), $user->getSalt());
日志:
[2016-11-24 15:41:51] app.DEBUG: 初始化用户系统 [] [] [2016-11-24 15:41:51] app.INFO:匹配路线“{route}”。 {"route":"GET_admin_users","route_parameters":{"_controller":"[object] (关闭: {})","_route":"GET_admin_users"},"request_uri":"http://dev.fmp2/admin/users","method":"GET"} [] [2016-11-24 15:41:51] app.INFO: 一个 AuthenticationException 是 抛出;重定向到身份验证入口点。 {“异常”:“[对象] (Symfony\Component\Security\Core\Exception\AuthenticationCredentialsNotFoundException(代码: 0):在 TokenStorage 中没有找到 Token。在 /home/andref/workspace/fmpsite2/vendor/symfony/security/Http/Firewall/AccessListener.php:53)"} [] [2016-11-24 15:41:51] app.DEBUG:调用认证入口 观点。 [] [] [2016-11-24 15:41:51] app.DEBUG:
【问题讨论】:
-
你是如何为用户设置密码的?您是否尝试过使用纯文本编码器?
-
去试试
-
即使使用 PlaintextPasswordEncoder() 我也无法进行身份验证。我尝试调试函数 loadUserByUsername($username) 但它没有被调用
-
添加 monolg 记录器提供程序,并启用调试并检查日志,安全组件大喊大叫。将它们粘贴在这里,让我们再试一次 :-) PD:当您更改编码器时,您必须更改数据库上的密码(存储的密码必须使用为安全组件配置的相同编码器进行编码),我假设您这样做了那已经...
-
从日志看来您并没有尝试输入用户密码,它只是寻找一个安全令牌(使用安全 cookie),但它只是说找不到。没有检查用户或密码