如果 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!');
}
如果安全拒绝访问 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!');
}