Symfony:当拒绝访问时显示jQuery模式对话框

Symfony:当拒绝访问时显示jQuery模式对话框

问题描述:

在我的网站中,只有少数用户有权访问某些链接(ROLE_ADMIN等)。以普通用户身份登录并尝试访问这些链接时,我收到Symfony AccessDeniedHttpException,这意味着它可以正常工作。Symfony:当拒绝访问时显示jQuery模式对话框

问题是,我怎么能创建一个模式对话框(我猜jQuery)只是简单地指示用户数据太明智了?

我不知道如何在树枝做它,因为我将不得不渲染一个包含脚本的变量?至少知道这样做的正确方法是很好的。

据我所知,如果用户没有足够的权利点击(或继续)到该链接,您需要打开一个模式窗口,并向用户发送一些消息,对吗?

快速和简单的解决方案:

我们有这样的链接(例如):

<a href="{{ path("some_route")}}"> click me</a>

你可以检查当前用户是否有作用(is_granted)ROLE_ADMIN然后表现出来,否则显示一些具体的链接弹出如下: main.html.twig

{% if is_granted('ROLE_ADMIN') %} 
    <a href="{{ path("some_route")}}"> click me</a> 
{% else %} 
    show a link with popup here 
{% endif %} 

你可以使用bootstrap popover或任何你喜欢的弹出窗口。

+0

谢谢,这帮了我很多! –

+1

这在技术上效果很好。但是我还会补充说,当有多条路由需要像这样检查时,拥有一个异常监听器会更有意义,因此检查逻辑是集中定义的,并且不会链接到您的视图层。 – Asha

您可以实现异常事件侦听器并侦听AccessDeniedHttpException。响应可以设置为显示错误消息或HTML页面。文档here