实现根据角色隐藏或显示模块

背景:

在B/S模式中,数据库权限设计很重要,根据不同的角色来显示不同的内容,不同的角色看到的内容是不同的。

比如“超级管理员”就可以看到“一般用户”看不到的模块。

我用PowerDesign设计了三张简单的表  分别为“user”“role”“auth”

user
用户编号
用户名称
用户密码
用户编号(pk)

role
角色编号
角色名称
角色编号(pk)

auth
权限编号
权限名称
权限编号(pk)

他们都是多对多的关系


然后生成其physical data model  再然后生成对应数据库的sql文件 我用的mysql  然后导入mysql 

共有5张表


我有一个登录页面  点击登陆后 会执行LoginServlet 处理数据

其中,

String roleSQL = "SELECT rid FROM role WHERE rid=(SELECT rid FROM userrole WHERE uid=(SELECT uid FROM `user` WHERE uname='"
				+ uname + "'))";
ResultSet rsRole = db.execQuery(roleSQL, obj);
来得到角色的id

然后,

session.setAttribute("role", role);
再dispatcher到该去的页面,比如说是index.jsp

到了index.jsp后,结合javascript和el表达式,做一个判断:

function run(){
	var role = '${sessionScope.role}';
	switch(role){
	case '2':{
			var roleManage = document.getElementById("roleManage");
			roleManage.style.display = 'none';
		}
	}
}

然后在body标签的onload中加载该方法


解释一下js代码:

在role表中rid为自增的1,2,3、、、、代表不同的角色

我设置的1为“超级管理员”,2为“一般用户”,“一般用户”没有“修改角色”的功能

这个“修改角色”的模块就是id=roleManage

然后用switch判断一下,如果是2,即“一般用户”,则将“修改角色”的模块隐藏掉

基本算是实现了这样的效果  

不知道是不是规范的做法  有待以后进一步了解与学习



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值