Drupal jquery条件用户操作

Drupal jquery条件用户操作,jquery,drupal,conditional,action,Jquery,Drupal,Conditional,Action,我想知道是否有一种方法可以使用Jquery来检测用户是否是管理员,并允许他们单击链接。 对于所有on admin用户,在所述链接上有一个e.preventedafult()处于活动状态 这可能吗,任何人?因为JS是在浏览器中运行的,所以没有完全的证明方法来做到这一点(您的JS代码总是可以修改的)。但这里有两个解决方案。第一种方法不如第二种方法充分,但更简单&提供更好的用户体验 让php模板回显一个隐藏的div,该div包含jQuery代码可以访问的值(如true或false),以确定用户是否是管

我想知道是否有一种方法可以使用Jquery来检测用户是否是管理员,并允许他们单击链接。 对于所有on admin用户,在所述链接上有一个e.preventedafult()处于活动状态


这可能吗,任何人?

因为JS是在浏览器中运行的,所以没有完全的证明方法来做到这一点(您的JS代码总是可以修改的)。但这里有两个解决方案。第一种方法不如第二种方法充分,但更简单&提供更好的用户体验

  • 让php模板回显一个隐藏的div,该div包含jQuery代码可以访问的值(如true或false),以确定用户是否是管理员

  • 让链接实际发出AJAX请求。通过这种方式,可以由请求的URL中的PHP进行确定

  • #1更容易破解,因为它提供了两个破解位置:1)DOM值(true或false)和2)脚本本身的代码(如果您不知道,用户可以动态修改)

    #2仅提供第二种情况

    但是,这显然更复杂,因为两者都是可黑客攻击的,而且用户是值得信任的人,我认为(因为它是管理员),我只会选择1


    实际上,我在Drupal站点上经常做这种事情。当然,在一个可能会产生安全问题的地方(即,如果发出AJAX请求,我从不相信我的JS会向服务器发送正确的登录uid;相反,我总是在处理请求的PHP代码中使用global$user)。

    您可以使用AJAX,但如果用户没有启用javascript,他们仍将前往链接的目的地

    另一种方法是,如果用户不是管理员,只需抑制链接的显示


    在这两种情况下,只在服务器端验证用户。不要依赖javascript验证,因为恶意用户可能会破坏它。

    我是在试图找到一种只显示管理员调试消息的方法时发现这一点的。我创建的每个站点都使用管理菜单模块,因此我只需检查是否定义了$('body.admin-menu div#admin menu'),因为它只显示我设置为显示的角色


    由于我没有将用户发送到任何敏感页面或显示任何真正重要的消息,因此它工作正常,并且我不必添加管理菜单模块尚未添加的任何元素。

    感谢您的评论MEsch和maxedison。maxedisons的第一个建议是我实现的,但我没有使用隐藏的div,而是检查了主体是否有“logged in”类。然后,我会阻止默认或允许。