我的Symfony2项目中有两个防火墙,"admin"和"client".它们都使用相同的实体提供者.
我遇到的问题是,当我退出一个防火墙时,我也会退出另一个防火墙.我不希望这种情况发生.
我的实施或策略是否有问题.我确实想过拥有一个防火墙并通过用户角色管理对管理员和客户区的访问.但是,这并不能避免我上面描述的注销场景.
下面是我的security.yml(有点简化).
admin:
pattern: ^/admin
form_login:
provider: acme_userbundle
login_path: admin_login
check_path: admin_security_check
logout:
path: admin_logout
target: admin_login
anonymous: false
client:
pattern: ^/client
form_login:
provider: acme_userbundle
login_path: client_login
check_path: client_security_check
logout:
path: client_logout
target: client_login
anonymous: false
Run Code Online (Sandbox Code Playgroud) 我的验证器服务未提供给验证器.我收到一个错误:"警告:我的\ Bundle\Validator\Constraints\MyCustomValidator :: __ construct()......缺少参数1"
这是我的services.yml
// My\Bundle\Resources\config\services.yml
services:
my.validator.service:
class: My\Bundle\Validator\Constraints\MyCustomValidator
arguments: [ @doctrine.orm.entity_manager ]
Run Code Online (Sandbox Code Playgroud)
这是我的验证器类:
// My\Bundle\Validator\Constraints\MyCustomValidator
namespace My\Bundle\Validator\Constraints;
use Symfony\Component\Validator\Constraint;
use Symfony\Component\Validator\ConstraintValidator;
use Symfony\Component\DependencyInjection\ContainerInterface as Container;
use Doctrine\ORM\EntityManager;
class MyCustomValidator extends ConstraintValidator
{
private $em;
public function __construct($em)
{
$this->em = $em;
}
public function validate($value, Constraint $constraint)
{
// Do something
}
}
Run Code Online (Sandbox Code Playgroud)
这是我的validation.yml
// My\Bundle\Resources\config\validation.yml
My\Bundle\Entity\Page:
properties:
name:
- NotBlank: ~
- My\Bundle\Validator\Constraints\MyCustom: ~
Run Code Online (Sandbox Code Playgroud)
这是我的Constraint课程
namespace My\Bundle\Validator\Constraints;
use Symfony\Component\Validator\Constraint;
class MyCustom extends Constraint
{
public …Run Code Online (Sandbox Code Playgroud)