通过验证的就显示,这样就可以操作。否则不显示或者转向。

解决方案 »

  1.   

    具体实现的时候你需要明确两点:
    1、登录的人有什么权限,比如权限是54(具体代表如上所说的权限)。
    2、控件显示的条件,比如个人可以访问还是部门用户可以访问,是只有查询权限还是有添加权限。然后可以写一个类,传递三个参数进去(登录人的权限,控件的用户等级,数据库操作权限),返回true或者false,例如
    HyperLink2.Visible=controlBoolen(Session["popedom"].ToString(),128,2)
    或者
    if(controlBoolen(Session["popedom"].ToString(),128,2)!=true)
    {
       Response.Redirect("index.aspx");
    }
      

  2.   

    // 传入权限Session["popedom"]、部门功能、数据库功能,返回布尔值检验是否有权限使用
    public bool controlBoolen(string controlId,int controlOrgUse,int controlDbUse)
    {
    int intResult;
    int controlPopedom;
    bool controlOrgPop;
    bool controlDbPop;
    bool control;
    string controlTemp=""; controlPopedom=Convert.ToInt32(controlId); // 判断数据库操作类型
    Math.DivRem(controlPopedom,16,out intResult);
    controlPopedom=controlPopedom-intResult; if (intResult>=8) // 判断删除权限
    {
    intResult=intResult-8;
    controlTemp="8,";
    }
    if (intResult>=4) // 判断修改权限
    {
    intResult=intResult-4;
    controlTemp=controlTemp+"4,";
    }
    if (intResult>=2) // 判断添加权限
    {
    intResult=intResult-2;
    controlTemp=controlTemp+"2,";
    }
    if (intResult>=1) // 判断查询权限
    {
    intResult=intResult-1;
    controlTemp=controlTemp+"1";
    } if(controlTemp.IndexOf(controlDbUse.ToString())==-1 || controlTemp==null)
    {
    controlDbPop=false;
    }
    else
    {
    controlDbPop=true;
    } // 判断人员操作类型
    controlTemp=""; if (controlPopedom>=128) // 判断所有权限
    {
    controlPopedom=controlPopedom-128;
    controlTemp="128,";
    }
    if (controlPopedom>=64) // 判断大类权限
    {
    controlPopedom=controlPopedom-64;
    controlTemp=controlTemp+"64,";
    }
    if (controlPopedom>=32) // 判断部门权限
    {
    controlPopedom=controlPopedom-32;
    controlTemp=controlTemp+"32,";
    }
    if (controlPopedom>=16) // 判断个人权限
    {
    controlPopedom=controlPopedom-16;
    controlTemp=controlTemp+"16";
    } if(controlTemp.IndexOf(controlOrgUse.ToString())==-1  || controlTemp==null)
    {
    controlOrgPop=false;
    }
    else
    {
    controlOrgPop=true;
    } // 得出综合权限
    if (controlDbPop==true && controlOrgPop==true)
    {
    control=true;
    }
    else
    {
    control=false;
    } return control;
    }这个还不是一个特别完善的东西,当初我项目没时间,我就没写了,最后应该可以实现不管多少等级都可以算出来,我现在只能算三个等级。当然最后我把它做成了用户控件,使用很方便了。
      

  3.   

    2005-09-14 10:18:16 不死鸟
    我对于你权限很多的情况还是不了解 2005-09-14 10:19:39 不死鸟
    那样打分数确定权限不会冲突? 2005-09-14 10:21:31 许留心
    肯定不冲突 
      2005-09-14 10:21:58 许留心
    你知道linux的权限管理吗,就是一样的道理 
      2005-09-14 10:22:34 不死鸟
    2的倍数很奇妙啊 2005-09-14 10:22:56 不死鸟
    那么你最后在哪里判断权限呢?后台还是前台? 2005-09-14 10:23:39 许留心
    后台, 
      2005-09-14 10:24:38 不死鸟
    修改一个页面的权限呢? 2005-09-14 10:25:05 许留心
    也可以 
      2005-09-14 10:26:15 不死鸟
    看网上说要用用户控件 2005-09-14 10:26:07 许留心
    其实你一样可以控制一个页要不要显示 
      2005-09-14 10:26:48 不死鸟
    写死进后台我很担心 2005-09-14 10:26:42 许留心
    担心什么 
      2005-09-14 10:27:04 不死鸟
    我想通过前台控件的属性值来修改权限 2005-09-14 10:27:29 许留心
    其实权限你可以该的,任何有权限修改的用户都可以自己改 
      2005-09-14 10:28:06 不死鸟
    你怎么做到的? 2005-09-14 10:37:36 许留心
    我这个思路你别想混了,其实程序设计的本质是控制对数据库里众多表的权限。比如:我定义  查询=1,添加=2,修改=3,删除=4
            一等角色=16,二等角色=32,三等……   一直推下去,多少等都可以。一般我把一等角色定义为用户自己。          表1       表2     表3
    user01    23        38        
    user02
    user03这样,你修改23为54用户的权限不就扩大了吗,要增加角色类型,定义一个“X等角色”就可以了。 
      2005-09-14 10:41:58 不死鸟
    功能太多了,50个啊 2005-09-14 10:42:14 不死鸟
    角色也很多 2005-09-14 10:42:37 不死鸟
    哪怕一个功能使用的差别都可能是一个新角色 2005-09-14 10:42:40 许留心
    你有多少个表? 
      2005-09-14 10:43:27 不死鸟20多 2005-09-14 10:45:53 许留心
    那没问题,其实你看windows的权限管理,它的角色(也就是组)也不多,往往用户不满足,这样他们就通过组合其他权限得到一个新的组(角色)来使用。你说的那种情况,用这样的办法其实是很好的。 
      2005-09-14 10:46:55 不死鸟
    我再研究研究,多谢! 2005-09-14 10:46:56 许留心
    你还可以在这个表的基础上定义视图,一个视图就是一个角色 
      2005-09-14 10:47:33 不死鸟
    视图就免了,基本的还没搞定 2005-09-14 10:47:47 许留心
    晕死你7F8A98 
      2005-09-14 10:49:04 不死鸟
    用户表,角色表,功能表 三个表够了吗 2005-09-14 10:49:11 不死鸟
    功能模块表还有必要吗 2005-09-14 10:49:49 许留心
    反正我用一个表,权限表,就把权限的所有问题搞定了,没用那么多的表 
      2005-09-14 10:50:52 不死鸟
    根据实际情况我需要综合一下你的和别人的,所以更晕 2005-09-14 10:51:22 许留心
    配合一个LDAP服务器就把认证,授权通杀了。以后开发的系统可以直接整合到一齐,做单点登录了。 
      2005-09-14 10:52:12 不死鸟
    LDAP服务器 ??越来越玄乎了2005-09-14 10:52:39 许留心
    我做这个东西,一个人发呆了半天,在纸上算了两个多小时,全部搞定花了我两天。