我正在尝试使用包含在 Silex PHP 框架中的 Symfony 安全组件。不幸的是,我无法使用 Silex 文档,因为它只列出了一些要求,没有给出任何完整的工作示例。
有一个Silex 用来注册 SecurityProvider 的参数列表;他们应该是什么?
一般来说.. 如何在 Silex 中正确配置 SecurityProvider?
任何人都可以发布一些片段/将我引导到一些带有说明的隐藏网页吗?
我正在尝试使用包含在 Silex PHP 框架中的 Symfony 安全组件。不幸的是,我无法使用 Silex 文档,因为它只列出了一些要求,没有给出任何完整的工作示例。
有一个Silex 用来注册 SecurityProvider 的参数列表;他们应该是什么?
一般来说.. 如何在 Silex 中正确配置 SecurityProvider?
任何人都可以发布一些片段/将我引导到一些带有说明的隐藏网页吗?
我对此有点挣扎。假设您指的是接受用户名和密码的表单输入,并且还使用 Bcrypt password_compat库,我可以发布一些我使用的代码。我使用单独的控制器,因此您可能必须对其进行调整以适合您的应用程序。我似乎错过的主要部分是表单数组的 username_parameter 和 password_parameter 键。它们根本没有在 Silex 上记录,我在一篇博客文章和 symfony 的文档中找到了它们。这是我的完整来源的链接。这是一个个人沙盒类型的项目。https://github.com/tmpjr/itaya
// app.php
$app->register(new SecurityServiceProvider(), array(
'security.firewalls' => array(
// Login URL is open to everybody.
'login' => array(
'pattern' => '^/login$',
'anonymous' => true,
),
// Any other URL requires auth.
'index' => array(
'pattern' => '^.*$',
'form' => array(
'login_path' => '/login',
'check_path' => '/login_check',
'username_parameter' => 'username',
'password_parameter' => 'password',
),
'anonymous' => false,
'logout' => array('logout_path' => '/logout'),
'users' => $app->share(function() use ($app) {
return new Itaya\UserProvider($app);
}),
),
),
));
// Define a custom encoder for Security/Authentication
$app['security.encoder.digest'] = $app->share(function ($app) {
// uses the password-compat encryption
return new BCryptPasswordEncoder(10);
});
这是来自 UserProvider 的相关部分
public function loadUserByUsername($username)
{
//$this->app['monolog']->addDebug('xxxUSERNAME: ' . $username);
$stmt = $this->app['db']->executeQuery("SELECT * FROM user WHERE username = ?", array(strtolower($username)));
if (!$user = $stmt->fetch()) {
throw new UsernameNotFoundException(sprintf('Username "%s" does not exist.', $username));
}
return new User($user['username'], $user['pwd_hash'], explode(',', $user['roles']), true, true, true, true);
}