CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  .NET技术 >  ASP.NET

用户-角色-权限的问题

楼主super_chen()2006-12-08 11:08:42 在 .NET技术 / ASP.NET 提问

我做一系统里面有新闻发布的模块,表如下:  
  news表(新闻的基本表)  
  user表(用户基本信息)  
  role表(角色基本信息)  
  menu表(后台管理菜单的基本信息)  
  userInRole表  
  userID  
  roleID  
  roleInMenu表  
  roleID  
  menuID  
   
  现在有3个用户admin,newsRecordA,newsRecordB  
  他们的角色为管理员,新闻录入员A,新闻录入员B  
  当这3个用户分别登陆的时候,管理菜单相应的变化(已实现)  
  当进查看发布新闻节点(管理菜单中的一节点),怎么实现管理员(admin)可以看到所有新闻,新闻录入员A(newsRecordA)只能看到他自己发布的新闻,新闻录入员B(newsRecordB)也只能看到他自己发布的新闻  
   
   
  问题点数:100、回复次数:24Top

1 楼super_chen()回复于 2006-12-08 11:09:53 得分 0

江湖求救,请各位大吓帮帮忙Top

2 楼cuizhanjun1981(城市稻草人)回复于 2006-12-08 11:14:25 得分 0

new表里   添加一个userid字段来记录谁发的那一条新闻信息。然后在   where里加上这个条件的过滤就行了。Top

3 楼xuyiazl(女人?火星动物!地球很危险,快回去! =.=!!!)回复于 2006-12-08 11:16:40 得分 20

你不是实现了`   登陆时候随着管理员的身份   变化菜单吗  
  每个管理员都带有参数  
  设置权限也一样   管理员的权限是所有    
   
  新闻录入员A和新闻录入员B可以通过参数来识别自己发表的文章  
  Top

4 楼xuyiazl(女人?火星动物!地球很危险,快回去! =.=!!!)回复于 2006-12-08 11:18:22 得分 0

管理员的权限是所有  
   
  可以做个判断   管理员admin是唯一的  
   
  如果是admin登陆则开放所有权限   查询所有Top

5 楼softfire007(为天下美女幸福而生!)回复于 2006-12-08 11:22:32 得分 0

有个LoginView控件    
  没有弄过     顶Top

6 楼xuyiazl(女人?火星动物!地球很危险,快回去! =.=!!!)回复于 2006-12-08 11:29:02 得分 0

给所有管理员分级别   ~~~~~~这样会更方便`~  
  管理员   ----   A级  
  新闻录入员A和新闻录入员B   ----B级  
   
  当A级登陆   显示所有  
   
  B级则通过参数查询Top

7 楼nicochang()回复于 2006-12-08 11:42:28 得分 0

用户对应的角色,角色对应的权限  
  权限是什么,是操作的集合  
  现在是,不同的用户,有不同的权限,表面上看都是浏览这样一个操作  
  但是实际上,是不同的操作,不同的操作肯定要靠代码来实现  
  一个办法,用一套代码,通过参数来判断,但是这样不好的地方就是,耦合度很高,如果有权限的变化,处理起来很麻烦,而且是直接在代码中处理  
  还有一个办法,是不同的操作,用不同的代码实现,也就是说,管理员,和其他的人是不同的代码,在角色定义的时候,权限定义映射到不同的代码上  
  这样,可以实现解耦  
  这样不好就是有冗余的代码,需要从代码结构上考虑一下,用继承之类的办法,优化一下Top

8 楼tianyi_hsy(學無止境)回复于 2006-12-08 12:13:50 得分 0

还是进入模块时根据用户参数来判断范围好点,这样容易实现也便于维护。Top

9 楼cat_hsfz(我的新Blog在http://cathsfz.cnblogs.com)回复于 2006-12-08 12:35:03 得分 0

最简单的办法,在web.config中配置子目录与Roles的访问权限关系,然后用SiteMap来声明导航。普通的SiteMapProvider自然会根据URL和配置来知道一个导航节点当前用户是否有权访问,没权访问的节点它会自动隐藏。  
   
  更复杂的做法,就是自己继承SiteMapProvider,在里面实现自己的权限处理逻辑。Top

10 楼truelove12(结贴者寥寥无几,心寒ing...)回复于 2006-12-08 13:11:45 得分 0

我是这样考虑的  
   
  user表中加一字段用来代表级别  
   
  userid   username   userlevel  
  1 admin     9  
  2               newsrecordA               1  
  3               newsrecordB               1  
   
  在news表中  
   
  newsid       newsForUserID  
  1                 2  
  2                 2  
  3                 3  
   
  这样划分每条新闻的归属  
   
  在newsView.aspx,你先判断一下用户的userlevel。如从一个dataset中  
  if   ds.tables(0).rows(0).item("userlevel")=9   then  
  '列出所有新闻  
  else  
  select   from   news   where   newsForUserID=从该用户登录时取得的userid  
  '这样就可以取出登录用户的所有新闻了  
  end   if  
   
  其实我觉得这里用membership和role就比较方便了。Top

11 楼super_chen()回复于 2006-12-08 15:52:47 得分 0

new表里     添加一个userid字段来记录谁发的那一条新闻信息  
  如果是这样的话,管理员要是再添加一个用户a,把a分配给角色(内容编辑),那不是要在new表里的每个userid字段里加上a的idTop

12 楼palts520(试了就知道)回复于 2006-12-08 16:14:28 得分 0

就   按照上面的做就可以了  
  这个就是 加载的时候  
  进行判断就可以了Top

13 楼super_chen()回复于 2006-12-08 16:15:21 得分 0

现纠正一错误  
  3个用户             admin,newsRecordA,newsRecordB      
  对应的角色是   管理员,新闻录入员,新闻录入员  
  当用户登陆的时候user(表)->userInRole表(检索出该用户userID对应的RoleID)->roleInMenu表(检索出roleID对应的menuID)[实现菜单的管理]  
  当点击菜单里的"查看发布新闻"节点时,要怎么实现管理员(admin)可以看到所有新闻,新闻录入员A(newsRecordA)只能看到他自己发布的新闻,新闻录入员B(newsRecordB)也只能看到他自己发布的新闻,新闻录入员A(newsRecordA)和新闻录入员B(newsRecordB)是同一角色(新闻录入员),星期天给分Top

14 楼hy_lihuan(我想早恋,可是已经晚了)回复于 2006-12-08 16:26:41 得分 0

当进查看发布新闻节点(管理菜单中的一节点),怎么实现管理员(admin)可以看到所有新闻,新闻录入员A(newsRecordA)只能看到他自己发布的新闻,新闻录入员B(newsRecordB)也只能看到他自己发布的新闻  
   
  这个不是权限的问题,应该是直接通过代码实现的阿,比如进入以后管理员有修改,删除的按钮,其他人员没有,这个才叫权限控制把Top

15 楼super_chen()回复于 2006-12-08 16:35:11 得分 0

类别权限已实现,就是业务权限连不上Top

16 楼truelove12(结贴者寥寥无几,心寒ing...)回复于 2006-12-08 20:13:55 得分 20

新闻录入员A(newsRecordA)和新闻录入员B(newsRecordB)是同一角色(新闻录入员),  
   
  好,他们是同一角色,但是他们在user表中是唯一的吧。如a他的userid   为1,b的userid为2  
  那么,你在news表中,记录下每条新闻的所有人.如  
  newsid   newstitle   newsWho  
  0001       title1           1  
  0002       title11         2  
   
  这样你选的时候,把他们登录时的userid记录下来,在这里找到所有的newswho   等于他们的userid的不就是可以了。Top

17 楼erictang2003()回复于 2006-12-08 21:06:05 得分 0

哪有那么麻烦啊!直接在WEB.CONFIG   里边分配权限又快又好!Top

18 楼yowbell(出色的女人从鸡做起,优秀的男人从狗做起)回复于 2006-12-09 08:45:12 得分 0

帮顶,学习Top

19 楼test33(隐姓埋名)回复于 2006-12-09 10:25:24 得分 0

帮顶,学习`Top

20 楼lovexyyy()回复于 2006-12-09 14:21:13 得分 10

支持一下了!这个问题!~我还是个人认为在数据库里加上新闻发布人好一点!这样虽然说有点频繁操作数据库不过就样对维护好点!  
   
  而对:erictang2003()   说的WEB.CONFIG   是什么操控文件!小弟不堪明白可否解释一下·!谢了Top

21 楼andy0618(自己选的路跪着也要走完)回复于 2006-12-09 14:33:47 得分 50

在用户发布新闻的时候,你要记录是谁发布的这条新闻,比如FBR_ID字段来记录  
   
  如果想要对这条新闻加上角色权限,就再加一个角色的字段,比如JS_ID  
   
  这样通过WHERE   语句来进行筛选  
  Top

22 楼andy0618(自己选的路跪着也要走完)回复于 2006-12-09 14:35:17 得分 0

后台发布的时候,你要尽量把所有能刻录的信息记录入数据库,这样就有更多的选择来维护和功能Top

23 楼andy0618(自己选的路跪着也要走完)回复于 2006-12-09 14:35:52 得分 0

后台发布的时候,你要尽量把所有能记录的信息记录入数据库,这样就有更多的选择来维护和实现功能Top

24 楼truelove12(结贴者寥寥无几,心寒ing...)回复于 2006-12-11 08:40:30 得分 0

让我BS一下楼主先Top

相关问题

关键词

得分解答快速导航

  • 帖主:super_chen
  • xuyiazl
  • truelove12
  • lovexyyy
  • andy0618

相关链接

  • CSDN .NET频道
  • .NET类图书
  • C#类图书
  • .NET类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo