如果 Security 拒绝访问某个角色,则在 Symfony3 中触发一个 Jquery 函数

if Security denies access for a Certain Role , Trigger a Jquery Function in Symfony3

如果安全拒绝访问 ROLE_USER 以使用路径 Admin_Only,我想触发某个通知弹出窗口,我成功地配置了这个,它在我的 :

security.yml

 access_control:
    - { path: ^/login$, role: IS_AUTHENTICATED_ANONYMOUSLY }
    - { path: ^/Admin_Only, role: ROLE_ADMIN }

access_denied_url: /home

我的 Twig 文件上有一个 JQuery 函数,我正在向其渲染 /home 动作,我们称它为 accessDeniedJQ。 问题是我如何检查以及在哪里(控制器中的操作或树枝上的操作)发生了重定向并且访问被拒绝,换句话说,我如何检查是否引发了此异常以便 JQ 函数启动。

当您的框架执行内部重定向(或者您只是不知道是否存在 HTTP 重定向)时,最好的办法是使用带有查询字符串的 URL 让您的代码知道它。

我的建议是在 url 中添加类似于 redirected=true 的内容,这样它就会变成 /home?redirected=true

使用从 jquery get querystring from URL

的答案中获取的函数
function getUrlVars()
{
    var vars = [], hash;
    var hashes = window.location.href.slice(window.location.href.indexOf('?') + 1).split('&');
    for(var i = 0; i < hashes.length; i++)
    {
        hash = hashes[i].split('=');
        vars.push(hash[0]);
        vars[hash[0]] = hash[1];
    }
    return vars;
}

我可以很容易地检测到我的页面被重定向并采取相应行动:

if(getUrlVars().redirected){
    alert('You are not allowed there, got redirected!');
}