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

如果安全性拒绝访问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 Action让它称之为accessDeniedJQ.
问题是我如何检查和在哪里(Controller或twig中的操作)重定向已经发生并且访问被拒绝,换句话说,我如何检查是否引发了此异常以便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!');
}
点赞