[置顶] 权限管理框架实现(3)--jquery自定义标签

上篇文章,介绍了,使用ValueStack对权限进行控制,但是还是需要前台工作者去写,其实,我们利用jquery,就可以做到对html标签的控制,基本思路如下:

1,获取所有特殊标签集合

2,ajax后台申请权限

3,判断返回值,没有权限则消除标签


具体js代码如下

1,获取集合

 var authObjs = $("auth[TestAuth='true']");

2,ajax申请后台

 $.ajax({
            type: "POST",
            url: authurl,
            async: false,
            dataType: "html",
            success: function(result) {
                if(hascode=="true"){
                    if(result.indexOf("noauth")<7 && result.indexOf("noauth")>=0){
                        oneAuthObj.remove();
                    }
                }else if (result.indexOf("<html auth='NOAUTH'></html>")<28 && result.indexOf("NOAUTH")>=0) {
                    oneAuthObj.remove();
                }
            },
            error:function(date){
                oneAuthObj.remove();
            }
        });

3,整体

$(function(){
    checkauth()
});
function checkauth(){
    var authObjs = $("auth[TestAuth='true']");
    for(var i=0;i<authObjs.length;i++){
        var oneAuthObj = authObjs[i];
        var authurl = $(oneAuthObj).attr("authurl");
        var hascode = $(oneAuthObj).attr("hascode");




        if(hascode=="true"){
            var authcode=$(oneAuthObj).attr("authcode");
            if(authurl.indexOf("?")==-1){
                authurl =authurl+"?authorityCode="+authcode;
            }else{
                authurl =authurl+"&authorityCode="+authcode;
            }
        }else{
            if(authurl.indexOf("?")==-1){
                authurl =authurl+"?authistest=true"
            }else{
                authurl =authurl+"&authistest=true"
            }
        }

        $.ajax({
            type: "POST",
            url: authurl,
            async: false,
            dataType: "html",
            success: function(result) {
                if(hascode=="true"){
                    if(result.indexOf("noauth")<7 && result.indexOf("noauth")>=0){
                        oneAuthObj.remove();
                    }
                }else if (result.indexOf("<html auth='NOAUTH'></html>")<28 && result.indexOf("NOAUTH")>=0) {
                    oneAuthObj.remove();
                }
            },
            error:function(date){
                oneAuthObj.remove();
            }
        });
    }
}

function checkauthbyurl(authurl){
    var isPass =false;
    if(authurl.indexOf("?")==-1){
        authurl =authurl+"?authistest=true"
    }else{
        authurl =authurl+"&authistest=true"
    }
    $.ajax({
        type: "POST",
        url: authurl,
        async: false,
        dataType: "html",
        success: function(result) {
            if (result.indexOf("<html auth='NOAUTH'></html>")<28 && result.indexOf("NOAUTH")>=0) {
                isPass= false;
            }else{
                isPass= true;
            }
        },
        error:function(date){
            isPass= false;
        }
    });
    return isPass;
}

4,前台代码

<auth  TestAuth="true" authurl="$!homeModule.getTarget('/testauth/edit.action')" >
    <input type="button" style="width:100px;" value="编辑"></input>
</auth>


效果:

[置顶] 权限管理框架实现(3)--jquery自定义标签_第1张图片

总结

       一次次,一次次,验证了那个道理,看似复杂的技术,都是简单技术的复杂化,或者业务话,就这样几个小的技术组合,就完成了基本权限控制的功能,这里我们还是要感谢那些奋斗在开源第一线的人们,分享和开源,已然是这个世界的主声音。




你可能感兴趣的:(html,jquery,Ajax,框架,管理)