在 Silex 上为 SecurityUserProvider 使用实体
Using Entity for SecurityUserProvider on Silex
在 silex 上,当我将简单的 UserProvider 与 Doctrine ORM(只是 DBAL)一起使用时,我的身份验证有效:
$app['security.firewalls']=array(
'app_secure' => array(
'pattern' => '^/app/',
'form' => array(
'login_path' => '/login',
'check_path' => '/app/login_check',
'always_use_default_target_path' => true,
'default_target_path' => '/app/'
),
'logout' => array(
'logout_path' => '/app/logout',
'target_url' => "/login",
'invalidate_session'=> "true"
),
'users' => $app->share(function() use ($app) {
return new App\Service\UserProvider($app['db']);
})
),
);
关于 Silex 文档,我已阅读:
If you are using the Doctrine ORM, the Symfony bridge for Doctrine provides a user provider class that is able to load users from your entities.
所以我尝试使用实体(使用 dflydev Doctrine ORM 服务提供商),但我找不到如何配置我的防火墙:
'users' => $app->share(function() use ($app) {
$em = $app['orm.em'];
return $em->getRepository('MyProject\Entity\User');
})
这个解决方案 return 我出错了:attempts a UserProvider
.
One of my sources : https://groups.google.com/forum/#!topic/silex-php/k-0X-BdG6Zw
我做错了什么?
谢谢
The users setting can be defined as a service that returns an instance
of UserProviderInterface
您必须确保用户存储库正在实施 UserProviderInterface。
为了使用 Doctrine one(谨慎使用,我从未使用过!),您首先需要安装 DoctrineBridge (composer require symfony/doctrine-bridge 2.7
),然后配置 Doctrine user provider:
<?php
$app['security.firewall'] = array(
//...
'users' => function() use ($app) {
return new Symfony\Bridge\Doctrine\Security\User\EntityUserProvider($app['registry_manager'], 'MyProject\Entity\User');
}
请注意,您需要一个 ManagerRegistry 实例,您可以查看此 registry manager provider 或自己创建一个。
在 silex 上,当我将简单的 UserProvider 与 Doctrine ORM(只是 DBAL)一起使用时,我的身份验证有效:
$app['security.firewalls']=array(
'app_secure' => array(
'pattern' => '^/app/',
'form' => array(
'login_path' => '/login',
'check_path' => '/app/login_check',
'always_use_default_target_path' => true,
'default_target_path' => '/app/'
),
'logout' => array(
'logout_path' => '/app/logout',
'target_url' => "/login",
'invalidate_session'=> "true"
),
'users' => $app->share(function() use ($app) {
return new App\Service\UserProvider($app['db']);
})
),
);
关于 Silex 文档,我已阅读:
If you are using the Doctrine ORM, the Symfony bridge for Doctrine provides a user provider class that is able to load users from your entities.
所以我尝试使用实体(使用 dflydev Doctrine ORM 服务提供商),但我找不到如何配置我的防火墙:
'users' => $app->share(function() use ($app) {
$em = $app['orm.em'];
return $em->getRepository('MyProject\Entity\User');
})
这个解决方案 return 我出错了:attempts a UserProvider
.
One of my sources : https://groups.google.com/forum/#!topic/silex-php/k-0X-BdG6Zw
我做错了什么?
谢谢
The users setting can be defined as a service that returns an instance of UserProviderInterface
您必须确保用户存储库正在实施 UserProviderInterface。
为了使用 Doctrine one(谨慎使用,我从未使用过!),您首先需要安装 DoctrineBridge (composer require symfony/doctrine-bridge 2.7
),然后配置 Doctrine user provider:
<?php
$app['security.firewall'] = array(
//...
'users' => function() use ($app) {
return new Symfony\Bridge\Doctrine\Security\User\EntityUserProvider($app['registry_manager'], 'MyProject\Entity\User');
}
请注意,您需要一个 ManagerRegistry 实例,您可以查看此 registry manager provider 或自己创建一个。