gpt4 book ai didi

php - 交响乐 2 : Get Security Context Outside of Controller

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:51:52 26 4
gpt4 key购买 nike

我正在尝试编写一个需要访问用户权限级别的事件监听器。在 Controller 中我使用以下代码

代码:

$securityContext = $this->container->get('security.context');

if($securityContext->isGranted('ROLE_USER')){
//Do Something
}

但在 Controller 之外,我不知道如何获取安全上下文。可能吗?

最佳答案

最好的方法是使用(如 phpisuber 所说)依赖注入(inject) 通过 Service Container .但是,与其注入(inject)整个容器(这被认为是不好的做法,因为它会降低整个类的可测试性并打破松散耦合),您应该像这样注入(inject) security.context 服务:

acme_foo.bar_service:
class: %acme_foo.bar_service.class%
arguments:
- @security.context

你的服务可以是这样的:

<?php
namespace Acme\FooBundle\Service;

use Symfony\Component\Security\Core\SecurityContext;

class BarService
{
/**
* @var SecurityContext
*/
protected $context;

/**
* @param SecurityContext $context
*/
public function __construct($context)
{
$this->context = $context;
}

public function doSomething()
{
return $this->context->isGranted('ROLE_USER');
}
}

关于php - 交响乐 2 : Get Security Context Outside of Controller,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15907582/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com