【问题标题】:Javascript role handlingJavascript 角色处理
【发布时间】:2015-05-20 13:45:08
【问题描述】:

您好,我使用 spring security 在服务器端定义一些角色并限制对一些 Restful 地址的访问。服务器端没有问题。 javascript是个问题。我在客户端有一些链接,当用户没有管理员角色时,我将禁用这些链接。

在 javascrip/jquery 中执行此操作的最糟糕的方法是什么?有管理这个的脚本吗?

P.S.:我是 JavaScript 新手

在服务器端,角色由 Spring Security 管理,以避免未经授权的用户访问它们。我所知道的是:是否有一个脚本可以帮助我管理我想要在客户端(集中式)上混淆给普通用户的所有链接,或者让我手动转到页面上的每 50 个链接并添加对角色的检查?

【问题讨论】:

  • 这是一个非常广泛的问题。如何最好地处理安全性通常取决于您使用的框架(如果有)以及您的服务器 API 是什么样的。

标签: javascript jquery security spring-security client


【解决方案1】:

防止链接甚至从服务器端出现会更合适。因为如果您只是禁用它,任何聪明的用户都可以查看源代码并获取链接并运行它。但这里是如何禁用链接

$('.my-link').click(function () {return false;});

【讨论】:

    【解决方案2】:

    你可以 event.preventDefault() 而不是返回 false

    /// Disable all Links with a class
    $("a").click(function(event){
           event.preventDefault();
    
           //// check if admin
              if(  isAdminFunc() ){
                   handleThisLinkClickForAdmin();
              }else{
                     //// non admin users can not access links..  
              }
    });
    

    【讨论】:

      【解决方案3】:

      我终于找到了方法。在后端我不需要改变任何东西。 在前端,我必须在我的 html 页面上添加一个 taglib:

      <%@ taglib prefix="sec" uri="http://www.springframework.org/security/tags"%>
      

      在我可以保护只有具有此角色及以上角色的用户可以访问的块之后:

      <a href="http://www.everyUserAccess.com/html/">All normal user can access</a>
      <sec:authorize access="hasRole('admin')">
      <a href="http://www.onlyAdminAccess.com/html/">Only user with Admin role cann access</a>
      </sec:authorize>
      

      在此示例中,第一个链接可供所有人访问,第二个链接仅供具有“管理员”角色的用户访问。

      【讨论】:

        猜你喜欢
        • 2020-09-09
        • 2013-04-18
        • 1970-01-01
        • 1970-01-01
        • 2020-05-14
        • 2017-02-14
        • 2015-05-18
        • 1970-01-01
        • 2023-03-22
        相关资源
        最近更新 更多