возникли проблемы при использовании SensioFrameworkExtraBundle @Security & @IsGranted в Symfony 2.8 - PullRequest
0 голосов
/ 15 февраля 2019

поэтому я хочу реализовать функцию, которая может проверять, могут ли определенные роли получать доступ к маршруту (URL) или нет, используя SensioFrameworkExtraBundle @ Security & @ IsGranted отсюда https://symfony.com/doc/master/bundles/SensioFrameworkExtraBundle/annotations/security.html

и я использую Symfony 2.8

проблема в том, что когда я добавляю IsGranted в свой контроллер, я получаю это сообщение об ошибке

[Семантическая ошибка] Аннотация "@Sensio \ Bundle \ FrameworkExtraBundle \ Configuration \ IsGranted" в методе AppBundle \ Controller \ ProductController:: newAction () не существует или не может быть автоматически загружен в / home / lavin / мини-проект / src / AppBundle / Controller / (который импортируется из "/ home / lavin / mini-project / app /config / routing.yml ").

, поэтому я попытался найти какой-то открытый случай в переполнении стека, но какой-то ответ в другом потоке все еще сбивает меня с толку, чтобы решить эту проблему, например, в этой теме Создание пользовательскогоВалидатор требований для аннотации @Route в Symfony

и этот symfony2: проверка isGranted для маршрута

и этотмой код контроллера

<?php

namespace AppBundle\Controller;

use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Security;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\IsGranted;
use AppBundle\Entity\Product;
use AppBundle\Entity\Category;
use AppBundle\Entity\Cart;
use AppBundle\Entity\CartProduct;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\Form\Extension\Core\Type\TextType;
use Symfony\Component\Form\Extension\Core\Type\SubmitType;
use Symfony\Bridge\Doctrine\Form\Type\EntityType;

class ProductController extends Controller
{
    /**
     * @Route("/home")
     */
    public function homeAction()
    {
        return $this->render('product/home.html.twig');
    }
    /**
     * @Route("/", name="homepage")
     */
    public function indexAction(Request $request)
    {
        // replace this example code with whatever you need
        return $this->render('default/index.html.twig', array(
            'base_dir' => realpath($this->container->getParameter('kernel.root_dir').'/..').DIRECTORY_SEPARATOR,
        ));
    }

    /**
     * @Route("product/new", name="product_new")
     * 
     * @IsGranted("ROLE_SELLER")
     */
    public function newAction(Request $request)

, поэтому я ожидал, что URL-адрес маршрутизатора "/ product / new" будет доступен пользователю, у которого есть ROLE_SELLER, а пользователь с ROLE_CUSTOMER не может открыть или получить к нему доступ, который

...