基于WEB的权限管理框架有很多,这里我跟大家介绍下我的简单做法。事先说明:我不懂.Net!
思路一:前台JS控制。JS有一个优势那就是对象,利用JS的对象我们能很方便的进行权限管理。
我们知道在JAVASCRIPT中可以很方便修的将字符串转成对象。我们可以利用这点去实现权限管理。
如:我们的系统中两个模块:新闻和下载。对用户而言每个模块都有两个权限属性:增加和删除。
我们可以用JS去构造一个对象。
var power = {
news:{
add:true,
delete:false
},
download:{
add:true,
delete:false
}
}
那么这个对象就是权限了。比如我们想知道这个用户有没有增加新闻的权限就可以这样写:
alert('增加新闻权限' + power.news.add)
这样控制就实现了。还有一个问题就是如何保存到数据库中去。这里我们可以把对象转成字符串存入。
function translate(obj){
return "{news:{add:"+ obj.news.add +",delete:"+ obj.news.delete +"},download:{add:"+ obj.download.add +",delete:"+ obj.download.delete +"}}"
}
保存时只需要调用translate(obj)函数将权限对象转成字符串存入库。而拿出时就通过 eval ()将字符转成对象。
OK 这里就意味着我们前面所写的权限对象不是通过代码预先定义的而是通过数据库拿出然后再eval出来的。
思路二:这种方法非常适合像asp一类的语言。就是用协议形式去实现权限控制。
我们定义一个字符串(数组也是同样的原理)如:"10|11" 这表示了两个新闻和下载两个模块的权限信息。
我们通过split('|')方法将 "10|11"转成一个含有两个元素的数组,每个元素有两位,第一位是add第二位是delete 。
1 代表真0代假。那么对于一个"10|11"这样一个字符串要有一个解释的算法。通过这个算法我们让程序知道字符串的第一组是新闻权限、
第二组是下载权限。权限之前用'|'分隔。
这两种做法是基于我以往的开发经验得出也许有的系统也是这样做的,不可否认的是太简单了。控制性不强。基于对于黑客而言就没什么控制性。
正在加载
