通行证: 用户 密码 域名空间  下载中心 社区论坛 信息公告 my小屋
联系我们
设为首页
加入收藏

 

qq,asp,php,jsp,xml,sql,.net,编程 程序 网页图象 建站经验 私服
首页 | 新闻资讯 | 编程开发 | 网页设计 | 图形图象 | 网络媒体 | 网站模板 | 数 据 库 | 投稿
论坛 | 操作系统 | 系统优化 | 网络安全 | 黑客技术 | 硬件学堂 | 硬件报价 | 服 务 器 | 地图
专题 | 应用软件 | 聊天通讯 | q q 专栏 | 建站经验 | 在线工具 | 站长club | 注 册 表 | 旧版
社会 | 游戏娱乐 | 设计欣赏 | 疑难解答 | 社区论坛 | 韩国素材 | 素材图库 | 广告服务 | 服务
当前位置:首页>>在线服务>>疑难解答>>正文 新版上线![旧版]
注:打开慢时请稍等

关于权限的问题

http://www.iyit.net  日期:2006-10-6 15:38:29  来源:iyit.net收集  点击:
参加讨论
对于分类,假设有几个个权限:  
分类id、是否可读、下载、回复、编辑、添加、删除  
用户组:  
1.普通用户--是否允许可读、可下载、可回复  
2.编辑        --是否允许编辑、添加、删除  
3.管理员    --不论分类设置和权限组设置如何,均可(不知道是不是这样)  
权限表:  
分类id,是否可读、下载、回复、编辑、添加、删除  
 
现在这里面乱了,数据表到底该怎么设计?哪个对应哪个?怎么感觉有些重复了,有时候又感觉不够严密,矛盾  
 
不知道该怎么设计这种对应关系。。G胫傅悖嘈弧B伊恕?  
---------------------------------------------------------------  
 
你是设计之前最好写你的思路,你之所以出现这种情况是因为你做之前没有思考完整,而是边做边想的那种,做到那里就想到那里,所以会在这种情况时出现思绪乱的情况,以后得采用软件工程式的方式工作呀,楼主!其实我觉得你的这个设计可以这样进行:  
用户表--id,用户类型,权限标志,用户名  
权限表--id,是否可读,下载,回复,编辑,增加,删除  
 
权限标志对应权限表的id  
 
 
---------------------------------------------------------------  
 
 
假设是否可读、下载、回复、编辑、添加、删除分别用以下来标志  
                 1          2          4          8          16        32  
普通用户  有  1,  2,4三个权限标志。如果该用户有可读,可回复,不能下载,则为1+4=5  
权限位为5  
 
假设文章是一个分类,id为3,普通用户的角色id为1,权限为可读,可回复,不能下载则  
建立权限表类似如下  
分类id  角色id                权限id  
   3              1                          5  
 
用户表中有一个字段来保存他的角色id登录后根据他的角色id到权限表中读出该角色所应有的权限,保存在session中  
判断用户是否有该权限  
define("read",1);  
define("download",2);  
define("reply",4)  
if  ($_session['permission']  &  read)  
     echo  "有权限";  
else  
     echo  "没有读的权限          
 
---------------------------------------------------------------  
 
我都是用1和0来表示的  
$power  =  array('view','read','reply','edit');  
数据库中权限字段  
$powerstr  =  “1,0,1,1”  
$tmp  =  explode(',',$powerstr);  
foreach($power  as  $id=>$key)  
       $user['power'][$key]  =  $tmp[$i];  
---------------------------------------------------------------  
 
我最近也在搞一个目录树(版块)和用户及角色的权限问题,qq24160879,有空加我讨论一下!  
 
我是这样设计的  
 
目录树(版块):category  
id  parentid  content  rightscode  
1      0                  a                    1  
2      0                  b                    2  
3      1                  aa                  3  
4      1                  ab                  4  
5      2                  ba                  5  
 
权限列表(可读101、下载102、回复103、编辑104、添加105、删除106):rightslist  
id    rightslist      name  
1              101            可读  
2              102            下载  
3              103            回复  
4              104            编辑  
5              105            添加  
6              106            删除  
 
用户列表:userlist  
id        userid      username  
1              wf            王菲  
2              dh            大海  
 
用户权限列表:userrightslist  
id          userid        categoryid        userrightslist  
1                  wf                5                      101  102  103  
2                  wf                4                      101  104  106  
---------------------------------------------  
3                  wf                1                            105  
 
当点击具体目录时,通过userrightslist表读取当前用户在本目录下的权限,  
如果此用户在大版块下有权限  如第3条,那么可以把此权限继承到小版块中,  
那么wf在category  5小版块下的权限就是101  102  103  105  
 
个人的想法,肯定不是很成熟,望指教!!!!!!!!!!!!!!!!!:)  
 
 
---------------------------------------------------------------  
 
强烈推荐,看了权限就明白了,说穿了也就这么回事  
http://feyge.l79.isdns.com/feyge/article/item_php/1024023122.htm  
---------------------------------------------------------------  
 
加我msn,wangping7878@hotmail.com或许能带来一点启发!  
---------------------------------------------------------------  
 
用组,组对应权限!用户对应组!就好了!  
---------------------------------------------------------------  
 
关系到两种权限  
1、栏目、版面的权限,描述该栏目、版面可由谁做何种操作  
2、用户、组的权限,用户的权限由组派生,可修改但不可超越所在组的权限  
 
两组相交即可得到当前用户在当前版面的权限  
 
---------------------------------------------------------------  
 
还真有点麻烦,可不可反过来呢?每个栏目的    
不能阅读  编辑  发表  
 1,2            2,3,5  1,7  
 
就是栏目再加三个字段,记录拥有此权限的斑竹id  
---------------------------------------------------------------  
 
这里面的问题也不是太复杂,用论坛的例子来简单的分析如下:  
目的:  
   1.不同的用户拥有不同的权限,  
   2.在不同的栏目里允许不同的用户进入.  
 
实现:  
   1.将用户分组,组里设置最基本的权限.当然可以默认指定一些权限.比如用户组可以看帖,回帖等.  
   2.如果栏目不是很多,可以用一个字段来记录,然后用分隔符隔开,但这样是规范的.如果想要得到更好的结构,那应当建立一个对应表,来记录下栏目允许的用户组.  
 
表结构:  
用户组表  
+----------+----------+-----------+-----------+  
     id                      组名        权限名1            权限名2        ……  
+----------+----------+-----------+-----------+  
   groupid        groupname    allow_view    allow_post    ……  
+----------+----------+-----------+-----------+  
         1              普通用户            1                        1              ……  
+----------+----------+-----------+-----------+  
……  
 
论坛权限表  
+----------+----------+-----------+-----------+-----------+  
     版块id        用户组id            版块名        权限名1            权限名2        ……  
+----------+----------+-----------+-----------+-----------+  
   blockid        groupid        blockname      allow_view    allow_post      ……  
+----------+----------+-----------+-----------+-----------+  
         2                      1              程序设计              1                      0                ……  
+----------+----------+-----------+-----------+-----------+  
         2                      1              电影下载              1                      1                ……  
+----------+----------+-----------+-----------+-----------+  
 
……  
 
如上表所示,普通用户组本身是拥有看帖权和发帖权的,这在group表里可以设置。到了具体的版块,还可以设置针对某一个组的特殊权限。如上,普通用户组在程序设计版块只是有了看帖权,发帖权被屏蔽掉了。而在电影下载版块,他既有看帖权又有发帖权.  
 
如上所示,我们实际上可以为我们的系统加上更多的功能,如聊天,交友,这些功能用一个表是不能完成的。我们可以为其指定属于自己的权限对应表。实际上用户组这个表中的权限可以看作是这些权限对应表中的权限字段的和,只是用户组提供了一个默认值。  
 
如上的办法虽然可以处理很复杂的权限关联,但是扩展性不是太好,如果要为某一栏目加上一个权限字段,那对应的用户组表里也得加上这个字段,这大概是其最大的局限性。并且在权限判断时得要判断两次,一次是用户是否有对应的基本权限,第二次是要判断用户在指定的版块里是否有权限。这些是此法的局限性:)  
 
个人意见,仅供参考。  
---------------------------------------------------------------  
 
这样分要写死人了.哈哈哈.  
---------------------------------------------------------------  
 
countstars(深空)  
 
其实你说的“用户组”就是我指的“角色”,用户组只不过是一个容器,和用户及用户权限没有直接的关系!  
你可以这样做嘛,给用户组也分配权限(即权限列表rightslist中的权限),它和分配给用户的权限是一样的,然后再把用户添加到组中去。在页面中取得用户的权限,其实就是取得这个用户所在组的权限和这个用户的独立权限的“并集”!  
 
x个用户,y个分类的话,理论上就要有x*y行数据。------你说的没错,所以才把用户和权限的对应关系单独做成一个表userrightslist,难道在数据表中的查询还不算是快的吗?当然如果有更好的解决办法,我也愿意洗耳恭听,呵呵  
 
至于表userrightslist中的userrightslist字段,你也可以做成100110这样的格式,每一个位代表一个权限,然后利用位运算读取权限。。但在asp中似乎没有位运算(我没找到相关资料),所以我基本上用的都是三位或四位数字来代表一个权限!  
 
我说的方法绝对是可行的,因为我就反复用过很多次,但有些细微之处可能需要改进我还没找到更好的方法!:)  
 
 
---------------------------------------------------------------  
 
我觉得把所有要实现得权限组都放入一个权限表里。  
表中的字段为:  
可读  
下载  
回复  
编辑  
添加  
删除  
 
往里面添加的数据,一条记录就是一个用户组。  
比如:  
先插入一条普通用户组的权限数据  insert  into  tablename  values('true','false','true','false','true','false')。  
插入管理员组的权限:  insert  into  tablename  values  ('true','true','true','true','true','true')  
 
这样只要调用就可以了,以后增加字段就增加了权限,改起来方便,维护更方便  


编辑:黑鹰 [发送给好友] [打印本页] [关闭窗口] [返回顶部]
上一篇:一个简单的smtp发邮件类,不用发附件!要稳定
下一篇:设置register_globals = off后session_register不能获得值
转载请注明来源:www.iyit.net
特别声明: 本站除部分特别声明禁止转载的专稿外的其他文章可以自由转载,但请务必注明出处和原始作者。文章版权归文章原始作者所有。对于被本站转载文章的个人和网站,我们表示深深的谢意。如果本站转载的文章有版权问题请联系编辑人员,我们尽快予以更正。

 相关文章
最新更新 热点排行 推荐新闻
我在windows  xp上安装apache2.044+ph
apache+php,怎样打开session支持??
在linux中怎么配置pdflib和php  高分!
怎么样同时解释.php和.php3的文件呀,
php 4.1.0 及以后版本使用post变量的接
我的qq被盗走的原因分析
webqq好玩不?大鸟带你一起体验
奇奇怪怪的qq密技十五招
qq被盗到出售过程详解
微软winxp sp3再次跳票 推至08年发布
google苹果合作浏览器 防恶意网站
微软操作系统实现开源?
网管应当如何管理windows操作系统?
让windows xp系统锁定期间拒绝关机
windowsvista中文版11月30日正式发布
我在windows  xp上安装apache2.044+ph
php 在linux 下如何開啟ftp功能
apache2-win32+php的成功安装方法
怎么删除mysql???
apache+php,怎样打开session支持??
合并vcd片断、快速删除文件夹--dos命令
dos教程 dos命令基础应用
破解qq密码如此简单 
低格、分区、高格的应对--dos命令应用
一劳永逸--批处理命令(一)
qq2006 beta3隆重发布 实用功能一一奉
美国微软总部相中重庆15岁网络奇才(图
qq号码激活的常见问题及案例分析 
sql server安装文件挂起错误解决办法
三分钟让你的系统变处女:acronis tru
exeplorer.exe错误的问题的总结、解决
我的qq被盗走的原因分析
webqq好玩不?大鸟带你一起体验
奇奇怪怪的qq密技十五招
qq被盗到出售过程详解
google苹果合作浏览器 防恶意网站
网管应当如何管理windows操作系统?
让windows xp系统锁定期间拒绝关机
windowsvista中文版11月30日正式发布
google优化网站管理员指导方针
hilltop算法- 探索google排名新算法

设置首 页 - 版权声明 - 广告服务 - 关于我们 - 联系我们 - 友情连接
copyrights © 2004-2006 iyit.net all rights reserved.
网站合作、广告联系qq:147007642、466949678
易特网络技术 点击这里给我发消息