就是授权的问题。比如树形菜单的连接只限定某种权限的用户才可以访问。
就是财务管理员只能访问他的功能页面
    调度人员只能访问他的功能页面。
    还有其他的人,只能访问他的。。
希望有数据库和页面

解决方案 »

  1.   

    正巧我刚刚在公司做了一个系统的权限模块的功能。简单的介绍一下:
    数据库设计:
    Users表:字段包括:(uid int,uname varchar(20),upwd varchar(20)
    Roles表:字段包括:(rid int,rname varchar(20))
    UserRole表:字段包括:(ruid int,rid(外键) int,uid(外键) int)
    Menus表:字段包括:(mid int,mtext varchar(20),murl varchar(20),mparent int)注释:mparent 如果属于一级节点可设置为同一个数字,然后一级节点下面的子节点的mparent 等于一级节点的mid
    powers表:字段包括:(pid int,rid(外键) int,mid(外键) int,tian bit,shan bit,gai bit,cha bit)需要用到的sql语句有:
    查询某个用户所拥有的功能菜单:
    可做成一个存储过程
    create proc pro_SearchMenus
    @uid int
    as
    select distinct mid,mtext,murl,mparent from Menus where mid in(select mid from powers where rid in(select rid from UserRole where uid=@uid))uid可以在登录时用session["uid"]=dt.rows[0]["uid"];保存下来下面是如何在树形控件中显示和设置:
    第一步加载出父节点:代码
    private void Createparent()
    {
         //首先利用以上sql语句得到数据源
         //然后加载树的父节点
         DataTable dt=SqlHelper.getDB.Query(sql);//查询得到所有的菜单
        DataTable dd=SqlHelper.getDB.Query(sql2);//查询得到该用户所拥有的菜单出来
        foreach(DataRow dr in dt.rows)
         {
              if(dr["mparent"].ToString()=="0")
              {
                  TreeNode node=new TreeNode();
                  node.Text=dr["mtext"].ToString();
                  node.ToopTip=dr["mid"].ToString();
                  this.TreeView1.Nodes.Add(node);
                  CreateChildNode(node);
                  foreach(DataRow ds in dd.rows)
                  {
                       if(dr["mid"].ToString()==ds["mid"].ToString())
                        {
                             node.Checked=True;//选中该父节点
                        }
                  }              
              }
         }
    }
    第二步加载字节点
    private void CreateChildNode(TreeNode n)
    {
            DataTable dt=SqlHelper.getDB.Query(sql);//查询得到所有的菜单
             DataTable dd=SqlHelper.getDB.Query(sql2);//查询得到该用户所拥有的菜单出来
            foreach(DataRow dr in dt.rows)
            {
                  if(dr["mparent"].ToSting()==n.ToopTip)
                  {
                       TreeNode cnode=new TreeNode();
                       cnode.Text=dr["ntext"].ToString();
                       cnode.ToopTip=dr["mid"].ToStirng();
                       n.ChildNodes.Add(cnode);
                       CreateChildNode(cnode);//递归方法
                           foreach(DataRow ds in dd.rows)
                        {
                            if(dr["mid"].ToString()==ds["mid"].ToString())
                             {
                                 node.Checked=True;//选中该子节点
                                 }
                        }
                  }
            }    
    }哥们我写到这个份上了,如果你明白原理的话接下来应该很容易了。要成为一名好的程序言关键是要把原理搞清楚了,原理弄明白了什么都好说。有分的话给我多加点。呵呵
      

  2.   

    谢谢,以前看到过这种方案,这的确是一可行方案。
    我想这样不知道可否:
    使用ROLE实现WEB应用的授权。菜单什么的还是做到站点地图种。然后跟据权限不同。可以独到的节点也不同。
    希望大家给我多点选择。先谢谢大家了。
      

  3.   

    把用户登录后取得的权限写进session,页面读取的时候读取sesion里的权限是否符合。不符合弹回去。
    每次postback都验证用户session是否过期,过期就弹回登录或者其他处理页面。