【问题标题】:springsecurity role check inside javascriptjavascript中的spring安全角色检查
【发布时间】:2015-08-26 19:21:53
【问题描述】:

在 JSP 中使用 java 脚本是否可取,如下所示,

var f = null;
  '<sec:authorize access="hasAnyRole(\'c2ladmin\',\'provider\')">'
  f = function() {
      alert('hi');
  }
  '</sec:authorize>';

  '<sec:authorize access="hasRole(\'teacher\')">'
  f = function() {
      alert('teacher');
  }
  '</sec:authorize>';

注意:需要根据用户的角色从 Javascript 中渲染视图。

【问题讨论】:

  • “合法”是什么意思?您必须了解 Javascript 很容易被用户修改以显示某些属性。因此,您必须对用户正在执行的每个后端操作进行双重检查(您应该这样做)。请注意不要以这种方式打开自己的漏洞,您应该会没事的。

标签: javascript spring


【解决方案1】:

您可以尝试以下方法:

<sec:authorize access="hasAnyRole('admin','superadmin')" var="isAuthorizeAny"></sec:authorize>
<sec:authorize access="hasRole('user')" var="haRoleUser"></sec:authorize>

    <script type="text/javascript">
        if('${isAuthorizeAny}' == true){
             f = function() {
                alert('hi Admini');
            }
        }

        if('${haRoleUser}' == true){
             f = function() {
                alert('hei User');
            }
        }
    </script>   

【讨论】:

    【解决方案2】:

    这对我有用

    <input id="isRoleExterno" access="hasRole('ROLE_EXTERNO')" type="text" class="hide" value="true"/>
    
    <input id="isRoleExterno" access="!hasRole('ROLE_EXTERNO')" type="text" class="hide" value="false"/>
    

    在我的 JS 中

    var isRoleExterno = $('#isRoleExterno').val();
    
    if(isRoleExterno){var clazz="hide";}else{var clazz="";}
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-04-08
      • 2011-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-01-20
      • 2016-03-14
      • 2012-09-06
      • 2015-10-28
      相关资源
      最近更新 更多