帮助解决下,用户权限问题?

loveinet_168 2009-09-28 11:21:24
问题是这样的如图:


现在是通过后台管理员给每个用户分配不同的权限。在此我用复选框,除开超级管员为“-1”后,其它为别为1,2,3,4,5,6,7,8,9。将这些数字都放在一个字段里面,比喻我现在有个用户"ankow"只选择了,1,2,3也就是产品管理,定单管理,会员管理这三项,那么在字段内就会有1,2,3这三个数字,那ankow用户登陆后台后就只有产品管理,定单管理,会员管理这三项权限,其它没权限查看,请问我怎么判断登陆进用户的权限?我现在只能判断字段内一个数字不能判断多个数字。请问怎么做?
...全文
84 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
loveinet_168 2009-09-29
  • 打赏
  • 举报
回复
谢谢各位的回答.
toury 2009-09-28
  • 打赏
  • 举报
回复
这样做权限设置未免草率,而且扩展性极差。
如果你的系统不复杂,还是用2楼的建议比较好;
如果系统比较复杂,还要再增加相应的表
凡夫与俗子 2009-09-28
  • 打赏
  • 举报
回复
建用户表 和用户权限表(权限项目和是否有权限1或0) 然后关联,
在用户登录的时候先从权限表获取该用户的权限保存在cookies中,在需要权限才能进入的页面加上
if request.cookies("权限项目")<>1 then '//1表示有权限,按需求设置
'//没有权限的提示
end if
sy_binbin 2009-09-28
  • 打赏
  • 举报
回复
用ASP的instr方法去判断

假如你数据库中保存的是“1,2,3”这样的数据

那么再你登录后,判断哪些菜单是现实的话,你可以按照下面的去做

if instr(","&rs("role")&",",",1,")>0 then
'这里显示菜单
end if
浪尖赏花 2009-09-28
  • 打赏
  • 举报
回复
建议表结构:
t_user:用户表
id,name,pwd...
t_role:权限表
id,name...
t_user_role:用户权限对应表
id,user_id,role_id
  • 打赏
  • 举报
回复
用split:
写入为“1,2,3”
读出为split(“1,2,3”)
半山闲人 2009-09-28
  • 打赏
  • 举报
回复
一张'用户'表,用户表要包含'权限'字段,字段设为文本,可以尽量长一些,用来存储分配给该用户的权限,多个权限用英文逗号分隔,如这样:'1,2,3,4'
一张权限表,包含'ID'和'权限'两个字段,将所有权限存储在这里
对用户划分权限的过程就是把权限表中相应权限的ID组成一个以逗号分隔的字符串存储到'用户'表中'权限'字段里,当用户登陆时,将这个字段做为一个session,然后在需要较验权限的地方用一个专用函数来较验这个session就可以了,附上我用的较验函数,你可以按自己要求自行设置:

'-----------------
'权限判断函数
'PID 待验证权限ID
'Ptype 验证方式
'-1 输出一个逻辑值
'-2 页面权限验证,不通过跳转到受限页面
'-----------------
Function UserPopedom(PID,Ptype)
on error resume next
dim ArrayPopedom,i,ok
if Ptype="" then Ptype=1 '验证方式默认值
if PID<>"" and session("s_loginPopedom")<>"" then '判断权限是否为空
ArrayPopedom=split(session("s_loginPopedom"),",") '分割用户权限
for i=0 to UBound(ArrayPopedom) '循环判断用户权限
if int(PID)=int(ArrayPopedom(i)) then ok=true
next

PName=RsValue("select 项目 from 权限 where ID="&PID,3,"项目")

if ok then
select case Ptype
case 1
UserPopedom=true
'case 2
'WriteSysLog "对 "&PName&" 的访问验证通过!"
end select
else
select case Ptype
case 1
UserPopedom=false
case 2
'关闭数据源
closeDatabase
WriteSysLog "对 "&PName&" 的访问受限!"
response.Redirect("Wrong.asp?ErrID=1")
end select
end if
else
select case Ptype
case 1
UserPopedom=false
case 2
'关闭数据源
closeDatabase
WriteSysLog "未登录访问受限! "&PID
response.Redirect("Wrong.asp?ErrID=1")
end select
end if
End Function

28,391

社区成员

发帖
与我相关
我的任务
社区描述
ASP即Active Server Pages,是Microsoft公司开发的服务器端脚本环境。
社区管理员
  • ASP
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧