关于权限分配

在项目中遇到一个问题: 需要对不同权限的用户进行管理、有权限才可以进行相关的操作,
如对文件的增、删、改、查


1.在**tag.java中添加代码,从后台将权限编号交给前台



SystemUserVO systemUservo=(SystemUserVO)this.getAttribute("userLoginVO");
this.appendMessage("<modules>"+systemUservo.getModules()+"</modules>");
this.appendMessage("<operations>"+systemUservo.getOperations()+"</operations>");


1)
SystemUserVO systemUservo=(SystemUserVO)this.getAttribute("userLoginVO");
此条语句获得当前登录用户的对象

2)this.appendMessage("<modules>"+systemUservo.getModules()+"</modules>");
将模块名利用标签交给前台

3)this.appendMessage("<operations>"+systemUservo.getOperations()+"</operations>");
将权限对象利用标签交给前台

**tag.java 是将数据添加到 标签里,然后在**.xsl文件中就可以解析到数据


2. 从前台接收后台传过来的 模块和权限对象



<input type="hidden" id="modules" name="modules" value="{modules}"/>
<input type="hidden" id="operations" name="operations" value="{operations}"/>



3. 将页面中需要限制的功能按键 规范成统一的标识

如:


<input type="image" name="fun_2_image_update" id="rpt_YBSX_ctl00_ib_YBXG" title="修改" src="../../../images/xiugai.gif" align="absmiddle" style="border-width:0px;" onclick="updateData('{ybMode}',{id},'yb',{ybEventID})" /><xsl:text> </xsl:text>
<input type="image" name="fun_5_image_delete" id="rpt_YBSX_ctl00_ib_YBSC" title="删除" src="../../../images/new_delete.gif" align="absmiddle" style="border-width:0px;" onclick="return operateInf({id},{ybEventID},'{ybMode}')" />

<a id="ftn_1_img_add" name="fun_1_img_add" href="javascript:popWindow('yb')" style="display:inline-block;height:16px;"><img id="fun_1_img_add" src="../../../images/notify_new.gif" align="absMiddle" border="0" /><strong>新增</strong></a>



其中: name 是需要统一规范的部分,应 规范成" fun_权限id_按钮类型_按钮功能"
fun_5_image_delete表示操作按钮以图片显示,数据库操作权限id对应的为5,改操作为删除。
fun_1_img_add 表示改操作为添加按钮,对应权限id为1,以图片加文字显示
fun_6_btn_save 标识改操作为保存按钮,对应权限为6,以button方式显示


4. 在js中进行判断, 当前用户是否有相应的权限。


function checkOperation(){
var modules=document.getElementById("modules").value;

var operations=document.getElementById("operations").value;


var inputs=document.getElementsByTagName("input");

var imgs=document.getElementsByTagName("img");


var len=inputs.length+imgs.length;
var src=new Array(len);
for(var z=0;z<xsl:text><</xsl:text>inputs.length;z++){
src[z]=inputs[z];
}
for(var z=0;z<xsl:text><</xsl:text>imgs.length;z++){
src[inputs.length+z]=imgs[z];
}

for(var i=0;i <xsl:text><</xsl:text> src.length;++i)
{
if(src[i].name.indexOf("fun_") != -1)
{
var opeIds=src[i].name.split("_")[1];
var nums=opeIds.split(",");

for(var j=0;j <xsl:text><</xsl:text> nums.length;j++){
if(operations.indexOf(nums[j]) < 0){
if(src[i].name.indexOf("_btn_")!=-1){
src[i].disabled="disabled";
}

if(src[i].name.indexOf("_img_")!=-1){
src[i].style.display="none";
}

break;
}
}
}
}
}



var modules=document.getElementById("modules").value;
var operations=document.getElementById("operations").value;
分别获得 modules和operations的值并交给一个 js对象。

var inputs=document.getElementsByTagName("input");
var imgs=document.getElementsByTagName("a");
分别获得 链接和input的值并各交给一个对象

var len=inputs.length+imgs.length;
var src=new Array(len);
for(var z=0;z<xsl:text><</xsl:text>inputs.length;z++){
src[z]=inputs[z];
}
for(var z=0;z<xsl:text><</xsl:text>imgs.length;z++){
src[inputs.length+z]=imgs[z];
}
将两个对象拼接成一个数组。

if(src[i].name.indexOf("fun_") != -1)
判断:当按钮name的值中是否有"fun_"字符

var opeIds=src[i].name.split("_")[1];
var nums=opeIds.split(",");
取出按钮中的权限id

if(operations.indexOf(nums[j]) < 0){

判断 当前页面按钮中的权限id 存在与登录用户权限中

        			if(src[i].name.indexOf("_btn_")!=-1){

src[i].disabled="disabled";
}


如果按钮方式为 button , 则让其失效, 看上去按钮变成灰色

if(src[i].name.indexOf("_image_")!=-1){
src[i].style.display="none";
}

如果按钮显示方式为 image ,则让图片消失

if(src[i].name.indexOf("_img_")!=-1){

src[i].href="#";
src[i].disabled="disabled";
}
如果按钮显示方式为 链接加 文字, 则让用户按下按钮时 链接指向自身,并将图片设置为不可用

5. 在页面加载是 调用 js 权限验证方法

<body οnlοad="checkOperation()">


基本大概就是这样了···

不谢、、
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值