【问题标题】:How to redirect a user that doesn't have access to a reserved page?如何重定向无权访问保留页面的用户?
【发布时间】:2017-05-07 09:12:49
【问题描述】:

我有一个带有路由/admin 的管理面板。当我尝试与不是管理员的用户一起加入 /admin 路由时,它会引发以下异常:

表达式“has_role('ROLE_SUPER_ADMIN')”拒绝访问。

没关系,但如果用户没有ROLE_SUPER_ADMIN 角色,我想重定向。我尝试了几件事,但没有成功。这是我在AdminController 中的函数:

    /**
     * @Security("has_role('ROLE_SUPER_ADMIN')")
     * @Route("/admin", name="admin")
     */
    public function adminPageAction()
    {
        if ($this->isGranted('ROLE_SUPER_ADMIN')) {
            return $this->render('admin.panel.html.twig/admin.panel.html.twig');
        }
        return $this->redirectToRoute('homepage');
    }

【问题讨论】:

  • 为什么要重定向无法访问保留页面的用户?未经授权的用户甚至不应该知道该页面的存在,如果您在不提供任何有关“为什么”的信息的情况下重定向他,那么用户体验会多么糟糕。此解决方案的第一个缺点是,如果您真的想要这种行为,则必须将相同的代码放在任何控制器方法中。

标签: php symfony


【解决方案1】:

问题出在上面的注释中。无需放置@Security。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-07-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-03
    • 1970-01-01
    • 2012-02-03
    相关资源
    最近更新 更多