|
主题: 求教[ASP]:后台管理权限分配问题!!!
|
freelyice
职务:普通成员
等级:1
金币:1.0
发贴:159
|
#12003/9/16 11:04:49
问题如下: 在添加后台管理员时,我想让一个管理员同时可以管理好几个频道,写入数据库时,admin表中有三个字段:username password power 在power字段中,写入的值如:新闻,二手,房产 那么在新闻管理时该如何判断这管理员有无权限管理该栏目。 我尝试过用split(power,",") 然后for i=0 to ubound(power) if............... 不成功。。。不知是写错了还是? 非常感谢。。。
编辑历史:[这消息被freelyice编辑过(编辑时间2003-09-16 11:22:19)]
|
尘埃
职务:普通成员
等级:2
金币:3.0
发贴:700
|
#22003/9/16 11:10:40
最好用session来做!
|
freelyice
职务:普通成员
等级:1
金币:1.0
发贴:159
|
#32003/9/16 11:24:04
session那是肯定的。 登陆时:session("power")=rs("power") 但这里session("power")里的值可能是有好多个字符:如:新闻,二手,房产 那么我们必须把他分割开, 现在主要是不知道在新闻管理页面该如何判断此用户有无权限管理该页面。。。
编辑历史:[这消息被freelyice编辑过(编辑时间2003-09-16 11:25:09)]
|
freelyice
职务:普通成员
等级:1
金币:1.0
发贴:159
|
#42003/9/16 12:30:31
感谢您的耐心回复! 那么添加管理员时,权限如何分配给他呢? 在每个频道的管理页面又如何判断他有无权限呢? level字段如果只是布尔型,还是无法想通,,,
|
缺缺
职务:管理员
等级:8
金币:41.0
发贴:9620
|
#52003/9/16 13:17:40
我最近在做的.
admin_access = Request.Form("chk_news")&"|"&Request.Form("chk_en")&"|"&request.Form("chk_ad")&"|"&Request.Form("chk_buss")&"|"&Request.Form("chk_other") 这个当然和你用,隔开是一个意思
判断: Sub NeedAccess(Level,Area) set rs = Server.CreateObject("ADODB.Recordset") sql="SELECT * FROM tb_admin where f_admin = '"& Session("admin") &"'" rs.open sql,connCheck,1,1 AdminLevel = rs("f_level") if Level = "super" and (AdminLevel = "vip" or AdminLevel = "operationer") then Call AccessErr() elseif Level = "vip" and AdminLevel = "operationer" then Call AccessErr() end if if AdminLevel <> "super" then if rs("f_access") <> "" then admin_access = Split(rs("f_access"),"|") else Response.Write "权限未知" Response.End() end if rs.close() set rs = nothing Dim checkaccess checkaccess=false for i = 0 to UBound(admin_access) if Area = admin_access(i) then checkaccess=true exit for end if next if checkaccess<>true then Call AccessErr() end if end if
End Sub
编辑历史:[这消息被allinhands编辑过(编辑时间2003-09-16 13:18:51)]
|
缺缺
职务:管理员
等级:8
金币:41.0
发贴:9620
|
#62003/9/16 13:20:23
其实想想上面写的太累赘了..可惜懒....这样看起来更容易看明白
|
freelyice
职务:普通成员
等级:1
金币:1.0
发贴:159
|
#72003/9/16 14:00:00
感谢大家的帮助,问题得已解决!lemontree的方法,我还得去研究一下。。。allinhands你写得好长呀,看得我头都晕了。:) 底下是“蓝色理想"一位朋友写的:
<% function isAdmin(adminName,Name) isAdmin = false Name = split(Name,"|") for i = 0 to uBound(Name) if Name(i) = adminName then isAdmin = true exit for end if next end function Name = "新闻|二手|房产 " '用表的字段内容代替 adminName = "新闻" '当前栏目名称代替 if isAdmin(adminName,name) then response.write "可以管理" elseresponse.write "没有权限" end if%>
编辑历史:[这消息被freelyice编辑过(编辑时间2003-09-16 14:01:50)] [这消息被freelyice编辑过(编辑时间2003-09-16 14:02:30)]
|
缺缺
职务:管理员
等级:8
金币:41.0
发贴:9620
|
#82003/9/16 14:52:15
我把红色部分标记给你看了,跟你的也就一个意思
|
freelyice
职务:普通成员
等级:1
金币:1.0
发贴:159
|
#92003/9/16 16:05:57
en...shi de......Thanks... It's a good day today!!! :)
|
janlay
职务:管理员
等级:7
金币:28.0
发贴:7244
|
#102003/9/16 22:22:29
我的做法是创建一个权限映射表。表字段形式如下:
UserID:用户编号 CategoryID:栏目编号 Rights:权限类型
判断有没有权限就在这个表里面检索相应的用户和栏目,权限类型返回该用户对栏目的权限(如只读、读写、拒绝等)。
这种方法的好处是无需要考虑栏目多少,并可随时扩充权限类型,适用于比较复杂的应用。
更深入地,我们可以给栏目增加一个“继承权限”的属性,如果它的权限是从父级栏目继承过来的,判断它的权限就需要上溯到父目录,并且一至上溯到栏目权限没有继承为止,再从权限映射表里面取得最终栏目的权限。
|