首页 > 解决方案 > Symfony 安全性 - 获取有关拒绝访问的详细信息

问题描述

如果我有一个受 say 保护的控制器方法 is_granted('ROLE_XYZ'),而用户没有该角色,我如何在异常中获取“ROLE_XYZ”?目前,异常消息只有“拒绝访问”。

或者,一般来说,我想知道哪个表达式失败了。

标签: phpsymfonysymfony-security

解决方案


嗯,我不确定我是否正确理解了您的问题。

但是,如果您想使用自定义消息创建自定义访问被拒绝异常,请查看此页面:https ://symfony.com/doc/current/security/access_denied_handler.html

希望能帮助到你

编辑:如果先前给定的链接被破坏,要创建自定义消息,您必须:

  • 创建一个实现 AccessDeniedHandlerInterface 的类
class AccessDeniedHandler implements AccessDeniedHandlerInterface
    {
        public function handle(Request $request, AccessDeniedException $accessDeniedException)
        {
            // ...

            return new Response($content, 403);
        }
    }
  • 然后修改您的 security.yaml 以添加您的自定义类
    # config/packages/security.yaml
    firewalls:
        # ...

        main:
            # ...
            access_denied_handler: App\Security\AccessDeniedHandler

推荐阅读