如果安全拒绝某个角色的访问,则在 Symfony3 中触发一个 Jquery 函数
Posted
技术标签:
【中文标题】如果安全拒绝某个角色的访问,则在 Symfony3 中触发一个 Jquery 函数【英文标题】:if Security denies access for a Certain Role , Trigger a Jquery Function in Symfony3 【发布时间】:2018-01-30 10:11:17 【问题描述】:如果安全拒绝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 函数启动。
【问题讨论】:
您是否在应用程序的不同点尝试过console.log()
?在php中,我相信你可以做一个<?php echo "<script>console.log('')</script>" ?>
作为你的死。
在原生 php 中我知道这是可能的,但是使用 twig 模板我缺乏捕获异常的语法,一个代码示例会很有帮助
你不能把 url 改成 /home?redirected=true 并直接在你的 jQuery 中查找吗?
@KhaledOuertani try catch
怎么样? ***.com/questions/23731604/…
@Salketer 非常感谢,我确实传递了一些参数以及路径,我在树枝上检查了它们,根据它的存在我能够触发该功能,请用一些代码示例详细说明所以这个问题有一个正确的答案。
【参考方案1】:
当您的框架执行内部重定向(或者您只是不知道是否存在 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!');
【讨论】:
以上是关于如果安全拒绝某个角色的访问,则在 Symfony3 中触发一个 Jquery 函数的主要内容,如果未能解决你的问题,请参考以下文章