用户-角色-权限的问题
我做一系统里面有新闻发布的模块,表如下:
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




