上篇文章,介绍了,使用ValueStack对权限进行控制,但是还是需要前台工作者去写,其实,我们利用jquery,就可以做到对html标签的控制,基本思路如下:
1,获取所有特殊标签集合
2,ajax后台申请权限
3,判断返回值,没有权限则消除标签
具体js代码如下
var authObjs = $("auth[TestAuth='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(){
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;
}
<auth TestAuth="true" authurl="$!homeModule.getTarget('/testauth/edit.action')" >
<input type="button" style="width:100px;" value="编辑"></input>
</auth>
一次次,一次次,验证了那个道理,看似复杂的技术,都是简单技术的复杂化,或者业务话,就这样几个小的技术组合,就完成了基本权限控制的功能,这里我们还是要感谢那些奋斗在开源第一线的人们,分享和开源,已然是这个世界的主声音。