如何隐藏在服务器端数据表处理中公开的特定数据

时间:2016-09-29 06:15:00

标签: javascript java jquery spring-mvc datatables

目前我在做datatable服务器端的ajax处理。场景是:

  1. 与正常的数据表操作一样,即排序搜索分页。
  2. 带有动作标题的一列(比如最后一列)将包含ADD / EDIT / DELETE / MARK / CACHE等操作按钮。
  3. 根据用户角色及其访问权限,用户可以访问由admin分配的特定按钮。例如,

    Role = 1的用户启用了ADD-EDIT按钮 Role = 2的用户启用了EDIT-DELETE按钮

  4. 当用户登录1或2时,用户只能查看和访问这些按钮。

    如果我将访问信息从JSP(从会话对象获取信息)脚本标记传递到主javascript函数并使用If-Else条件就可以完成。但是访问信息会暴露给客户端。

    要求:我想在服务器端(Java-Spring)动态创建按钮或隐藏用户的逻辑。

    到目前为止,这是我的尝试:

    的script.js

     function getDatatable(id, url, columns) {
            globalDatatable = $('#' + id).DataTable({
                lengthChange : false,
                processing : true,
                serverSide : true,
                order : [ [ 0, 'asc' ] ],
                paging : true,
                fnDrawCallback : function(oSettings) {
                },
                ajax : {
                    url : url,
                    type : "GET",
                    datatype : "application/json",
                    data : function(d) {
                        return JSON.stringify(d);
                    }
                },
                initComplete : function(settings, json) {
                },
                columns : columns,
            });
        }
    function getIpRangeDatatable(id,url){
        var columns=[];
    
        columns.push({ data: "ipid" ,name:"ipid"});
        columns.push({ data: "startIp",name:"startIp" });
        columns.push({ data: "endIp",name:"endIp" });
        columns.push({ data: "allow",name:"allow" });
        columns.push({ data: "roleName" ,name:"roleName"});
        columns.push({ data: "description" ,name:"description"});
        columns.push({ data: "loginId",name:"loginId" });
        columns.push({ data:function(o1){ return parseDateTime(o1.fromDate); },name:"fromDate" });
        columns.push({ data: function(o1){ return parseDateTime(o1.toDate); },name:"toDate" });
        columns.push({ data: function(o1){ 
              var buttons=[{name:"Edit", action:"doOperations(2,12,3,"+o1.ipid+")"}
              ,{name:"Delete", action:"doOperations(3,12,4,"+o1.ipid+")"}];
              return getActionMenus(buttons);
            }});
    
        getDatatable(id,url,columns);
    }
    
    function getActionMenus(buttons) {
    var menu= "<div class='btn-group'>"+
    "<button type='button' class='btn btn-default'><span class='glyphicon glyphicon-share' aria-hidden='true'></span> Action</button>"+
    "<button type='button' class='btn btn-default dropdown-toggle' data-toggle='dropdown' aria-haspopup='true' aria-expanded='false'> <span class='caret'></span> <span class='sr-only'>Toggle Dropdown</span> </button>"+
    "<ul class='dropdown-menu dropdown-menu-right'>";
    for(var i in buttons ){
        menu+="<li><a href='javascript:"+buttons[i].action+"' data-title='IpRange'><span class='glyphicon glyphicon-edit' aria-hidden='true'></span>"+ buttons[i].name+"</a></li>";
    }
    menu+="</ul></div>";
    return menu;
    }
    

    test.jsp的

    <%
        String ctxPath = request.getContextPath() + "/";
        String id = "ipRange_" + Utils.getUUID();
    %>
    
    <div class="wrapper-content-area-pad">
        <div class="panel panel-primary flat-panel">
            <div class="panel-heading flat-panel">IP Range Details</div>
            <div class="panel-body">
            <a href="javascript:doGenericOperations(2,12,3,0)"class="btn btn-default" data-title="IpRange">
            <span class="glyphicon glyphicon-plus" aria-hidden="true"></span>Add IP</a>
    
                <table id="<%=id%>"
                    class="table compact table-striped table-bordered table-action" cellspacing="0"
                    width="100%">
                    <thead>
                        <tr>
                            <th>IPId</th>
                            <th>Start IP</th>
                            <th>End IP</th>
                            <th>Allow Rule</th>
                            <th>Type of User</th>
                            <th>Description</th>
                            <th>Username</th>
                            <th>From Date</th>
                            <th>To Date</th>
                            <th>Actions</th>
                        </tr>
                    </thead>
                </table>
            </div>
        </div>
    </div>
    
    
    <script>
        $(document).ready(function(){
            getIpRangeDatatable('<%=id%>', 'appAdmin/s/manage_ip/datatable/1');
        });
    </script>
    

    JSON数据样本:

    {"draw":1,"recordsFiltered":6,"data":[{"ipid":11,"startIp":"172.16.0.0","endIp":"172.16.255.255","allow":0,"allowNull":false,"description":"Faculty ip range ","roomId":0,"roomIdNull":false,"fromDate":null,"toDate":1474889095000,"userId":9295,"userIdNull":false,"roleName":"Faculty","userRoleId":4,"userRoleIdNull":false,"loginId":"shylaja.sharath@pes.edu"},{"ipid":12,"startIp":"10.10.101.10","endIp":"10.10.101.10","allow":0,"allowNull":false,"description":"Tech team Ubuntu","roomId":0,"roomIdNull":false,"fromDate":null,"toDate":null,"userId":0,"userIdNull":true,"roleName":"Student","userRoleId":3,"userRoleIdNull":false,"loginId":null},{"ipid":13,"startIp":"172.16.0.1000","endIp":"172.16.255.255","allow":0,"allowNull":false,"description":"Faculty ip range ","roomId":0,"roomIdNull":false,"fromDate":null,"toDate":null,"userId":0,"userIdNull":true,"roleName":null,"userRoleId":0,"userRoleIdNull":true,"loginId":null},{"ipid":18,"startIp":"172.16.174.40","endIp":"172.16.174.40","allow":1,"allowNull":false,"description":"Faculty IP Range","roomId":12,"roomIdNull":false,"fromDate":null,"toDate":null,"userId":0,"userIdNull":true,"roleName":"Faculty","userRoleId":4,"userRoleIdNull":false,"loginId":null},{"ipid":20,"startIp":"192.168.1.12","endIp":"192.168.3.35","allow":0,"allowNull":false,"description":"","roomId":0,"roomIdNull":false,"fromDate":null,"toDate":null,"userId":0,"userIdNull":true,"roleName":null,"userRoleId":0,"userRoleIdNull":true,"loginId":null},{"ipid":21,"startIp":"1.1.1.1","endIp":"192.168.1.255","allow":0,"allowNull":false,"description":"","roomId":0,"roomIdNull":true,"fromDate":null,"toDate":null,"userId":0,"userIdNull":true,"roleName":null,"userRoleId":0,"userRoleIdNull":true,"loginId":null}],"recordsTotal":6}
    

0 个答案:

没有答案