Symfony 5 PHP8 安全属性

Posted

技术标签:

【中文标题】Symfony 5 PHP8 安全属性【英文标题】:Symfony 5 PHP8 Attributes for Security 【发布时间】:2021-10-21 11:48:36 【问题描述】:

我正在尝试将一个页面从注释转换为 php8 属性。

namespace App\Controller;

use Sensio\Bundle\FrameworkExtraBundle\Configuration\IsGranted;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;

#[IsGranted('ROLE_ADMIN')]
#[Route('/page')]
class PageController extends AbstractController

    #[Route('/', name: 'page')]
    public function index(): Response
    
        return $this->render('page/index.html.twig', [
            'controller_name' => 'PageController',
        ]);
    

IsGranted 属性似乎不起作用,因为该页面是可访问的,而不是 403 错误。另一方面,当转换为注释时,如下所示,它按预期工作。是否有我缺少的配置设置?

/**
 * @IsGranted("ROLE_ADMIN")
 */
#[Route('/page')]
class PageController extends AbstractController

    #[Route('/', name: 'page')]
    public function index(): Response
    
        return $this->render('page/index.html.twig', [
            'controller_name' => 'PageController',
        ]);
    

#[Route]#[Entity] 等其他属性有效,但安全属性似乎无效。

【问题讨论】:

你使用的是哪个版本的 symfony? 我正在使用 Symfony 5.3.6 和 Php 8.0.9 还有SensioFrameworkExtraBundle的版本? sensio/framework-extra-bundle v5.6.1 【参考方案1】:

SensioFrameworkExtraBundle 包中对 PHP8 属性的支持仅适用于版本 6.1.0。您可能只需要更新它。

【讨论】:

以上是关于Symfony 5 PHP8 安全属性的主要内容,如果未能解决你的问题,请参考以下文章

Symfony 属性路由未考虑在内

使用 Symfony 路由从 .htaccess 重写 URL

Symfony 2.3 Bad Credentials 自定义提供程序

Symfony 2.5.6 打破登录?

使用 localhost 从主机访问 Vagrant 机器上的 symfony Web 服务器

Symfony 5 作曲家更新失败并带有安全检查器