目前正在做一个图书管理的系统,由于采用的是windows验证的方式,所以在权限管理上面我是想再加个角色表,还有个权限表就好,用户就直接读取域用户数据库。但是因为是第一次接触这个知识点,所以有很多问题,比如:角色表如何与用户表关联,权限表如何与角色表关联,权限功能如何与权限表关联?各位大大能否提供一些相关资料?或者给我讲解下相关知识。。谢谢!

解决方案 »

  1.   

    我一般是这样做的,
    用户表User
    用户组表Group
    用户——用户组UserGroupMapping
    权限表Permission
    用户——权限UserPermissionMapping
    用户组——权限GroupPermissionMapping
    这些个表,管理权限。
    当然也可以更复杂或更简单。
      

  2.   

    RBAC的好像挺复杂的。。我现在大概知道怎么验证用户类型了。。就是在那个用户表里给加个字段。。如果登录进去查询该用户名字段是管理员的话。。就能看到全部的功能连接。。现在的问题是我把 一些管理用的链接隐藏或者可见语句 都绑在了checkbox和button上,这些东西怎么才能和权限表关系起来?
      

  3.   

    用户表
    USERID    USERNAME    USERPASS
    1         ZHANG       XXXX
    2         LI          XXXXX用户权限表
    USERID   POWERID
    1         1
    1         2
    1         3
    2         1功能权限
    FUNNAME   POWERID
    添加        1
    删除        2
    修改        3
    最简单的用户权限设计,楼主体验下吧关于“现在的问题是我把 一些管理用的链接隐藏或者可见语句 都绑在了checkbox和button上,这些东西怎么才能和权限表关系起来?”
    用循环把功能权限读出来,在循环改用户的权限表,根据权限表更新你的观念权限状态就OK了。
      

  4.   

     可以在权限表里多弄个字段UserPower 你给它可以赋值让它管理权限,比如0是超级管理员,1是图书馆管理员,2是……   这都可以赋值的。我感觉这样就很简单。我那里边就是Userid  Userpassword Username 
    Userpower 我用那Userpower控制权限的。
      

  5.   

    string settings = Convert.ToString(ConfigurationManager.ConnectionStrings["SqlServices"]);
            //创建数据库连接
            SqlConnection myconn = new SqlConnection(settings);
            //打开数据库连接
            myconn.Open();
            string strsql = "select * from users where User_id='" + Tbx_id.Text + "' and User_password='" + Tbx_pwd.Text + "'";
            SqlCommand cm = new SqlCommand(strsql, myconn);
            SqlDataReader dr = cm.ExecuteReader();
            if (dr.Read())
            {
                Session["User_power"] = dr["User_power"];
                if (Session["User_power"].ToString() == "0")
                {
                    Response.Redirect("users.aspx");
                }
                else if (Session["User_power"].ToString() == "1")
                {
                    Response.Redirect("contract.aspx");
                }
                else if (Session["User_power"].ToString() == "2")
                {
                    Response.Redirect("contract_stat.aspx");
                }
                else
                {
                    Response.Redirect("customer.aspx");
                }        }
            else
            {
                Lbl_note.Text = "登录失败,请检查输入!";
            }
      

  6.   

    权限问题很复杂的 
    上网上找找看 
    2Lou的表 可以借鉴
      

  7.   

    如果你的有普通权限和最高权限,有个qxf,bit型 true表最高 ,false就是普通
    如果3个或超3个的,用个int型变量控制就可以了。1表最高,2...,3...下去
    代码里控制可以了
    例如用switch
    case 1:
    ...