1.在数据库的用户属性表里建立用户权限的字段
  可以使用数字如:1,2,3,4..来区分用户的等级
2.在用户登陆的时候可以使用"一次性全部取出放到一个session中"。
3.如果是多个角色,应该是算他最高权限的身份许多论坛就是这样的。

解决方案 »

  1.   

    專門用一個table存放用戶的權限設置:id ,modulename,進入每個頁面時,檢查該用戶是否屬於這個模組用戶(也就是在table中是否有(用戶id,此頁面膜組名)這樣一條紀錄),如果有則置此模組的權限控制變量chkModule1=true(初始值均是false).疊加也就是再判斷用戶是否屬於另外一個模組chkModule1.另外再設一個是否可以進入頁面的權限控制chkAccess,初始值=false,並在只要有一個chiModule(i)==true時,讓chkAccess=true.
        下面就是控制訪問了;如果chkAccess==true,那麼允許用戶進入,否則導向錯誤頁面.然後根據用戶所屬的模組允許其執行相應的操作我們公司就是這樣控制權限的,我覺得還不錯,在這裡我說的有點簡單了
      

  2.   

    喔,我上面提到的應是取權限的並集(手誤O^O),如角色a有權限1,2,3
    角色b有權限1,3,8,9.那麼用戶若為a,b角色,其權限為集合(1,2,3,8,9);
    用表紀錄角色權限,
    select unique 權限 from (select 權限 where 角色=a from 角色權限表 union all  select 權限 where 角色=b from 角色權限表) r.
    然後根據其權限執行相應的動作.
      

  3.   

    建议不要把 权限写在session ,进入页面的时候再从数据库检索。
    用户表:
    id roleid(角色号)
    权限表:
    id roleid(角色号) modulid(可以访问的模块号)大家讨论
      

  4.   

    我比较赞成 danieltang(停止思考)的观点:
    1,據你的系統,建議进入每个页面时才从数据库中去提取,
    原因:你的用户比较多,如果过量的使用session的话,我估计你的服务器吃不消。当然必须给每个用户分配必须的session,例如:session("姓名")等。
    2.首先,將你權限細分,並給定代號;
      其次,設定角色的權限,叠加该用户权限就是取各角色的權限的交集.
    叠加为:
      在数据库的用户属性表(TBmember)里建立用户权限(class)的字段
      可以使用数字如:1,2,3,4..来区分用户的等级
      例如校友录中,1表示普通用户,2表示班级管理员(也是普通用户),3表示班级创建人(是普通用户也是管理员,只有班级创建人才具有删除该班级的权限),4学校创建人(当然应该管理整个学校了)。
      然后依次类推。
      

  5.   

    to 停止思考:你查询语句是不是有问题?我用的是MS SQL SERVER。是不是应该建立一个临时表,子查询的性能不太好吧?
    明天早上给各位送分
      

  6.   

    (1)进入每个页面时才从数据库中去提取------这种方法客户端的响应速度是不是感觉有些慢?
    (2)过量的使用session的话,我估计你的服务器吃不消---------如果增加服务器硬件呢?
    客户好象不会理会服务器怎样,他们的第一感觉就是速度。
    怎样能够折衷(1)和(2)得到一个更好的方案呢?
      

  7.   

    我的建议是集成Windows安全体系,他提供了完整的权限支持
      

  8.   

    我的建议可以不使用数据库建表
    将你的页面权限设置为二进制的某一位
    如页面一是第一位
    如页面二是第二位
    每个用户有权限属性如101011...
    第一位为1,说明该用户有页面一的权限,可以进去
    第二位为0,说明该用户没有页面二的权限,不可以进去
    每次用户等录的时候,把这个属性放在session里
    如:在进入页面一之前与100000...与,判断结果为0,说明没有权限
    判断结果为1,说明有权限这个办法,我在建网站时用过,存入数据库时,可以把二进制数转成整形
    不足是,可能权限个数有限制,不能超过整型最大值
    当然,你也可以用double,但还是有限制的
      

  9.   

    我的这篇文章可供参考:使用动态Proxy和Java ACL进行用户访问控制机制实现
    http://www.jdon.com:81/jive/article.jsp?forum=46&thread=1876
      

  10.   

    web打印组件,web报表组件  WebPrint是一个在互联网环境下通用的打印底层。  http://www.fcsoft.com.cn:8080/webprintsample/index.html  e表是一个报表设计开发工具,融Excel和数据库于一身。适用于各种互联网下的查询统计报表。 http://www.fcsoft.com.cn:8080/webreport/help/index.html下载演示版http://www.fcsoft.com.cn/fcwebComponent.zip