简单的角色权限管理

首先将需要权限控制的菜单添加打菜单管理中!

简单的角色权限管理

 

在角色管理中将 该角色拥有的菜单打上钩

简单的角色权限管理

 

在页面中读取即可

 

可以将权限位防止一张表里如这种型式(一对多)

主建  角色id  权限位

       1         1    

       1          2

还可以(1对1)将角色全部防止同一个字段中 如果该位为1 表明他拥有该位的权限 0表明没

第几位是根据添加的菜单主键id来确认的(自增)

主建  角色id  权限位

       1         101010101    

 

    ///   <summary>
        
///  增加权限串
        
///  比如:原始权限串为101011101,现在需要将 110110110 增加进去
        
///   </summary>
        
///   <returns> 返回更新后的权限串 </returns>
         public   static   string  AddPowerStr( string  powerids,  string  powerids2)
        {
            
if  ( string .IsNullOrEmpty(powerids2))
                
return  powerids;

            
const   int  splitLen  =   63 ;                   // Int64.MaxValue 转成二进制字符串的长度            
             int  len1  =  powerids.Length;
            
int  len2  =  powerids2.Length;

            
// 确保两个权限长度一样
             if  (len1  <  len2)
            {
                powerids 
=  powerids.PadRight(len2,  ' 0 ' );
            }
            
else   if  (len1  >  len2)
            {
                powerids2 
=  powerids2.PadRight(len1,  ' 0 ' );
            }

            
// 将权限串按splitLen位长度分隔
            IDictionary < int string >  p1  =   new  Dictionary < int string > ();
            IDictionary
< int string >  p2  =   new  Dictionary < int string > ();
            
int  i  =   0 ;
            
while  (powerids.Length  >  splitLen)
            {              
// 将权限串按63位长度分隔
                p1.Add(i, powerids.Substring( 0 , splitLen));
                p2.Add(i, powerids2.Substring(
0 , splitLen));
                powerids 
=  powerids.Substring(splitLen);
                powerids2 
=  powerids2.Substring(splitLen);
                i
++ ;
            }
            p1.Add(i, powerids);
            p2.Add(i, powerids2);

            
// 位运算进行对比,添加权限
             string  newpowerstr  =   string .Empty;
            
int  count  =  p1.Count;
            
for  (i  =   0 ; i  <  count; i ++ )
            {
                newpowerstr 
+=  Convert.ToString(Convert.ToInt64(p1[i],  2 |  Convert.ToInt64(p2[i],  2 ),  2 );       // 转换成2进制 进行或运算
            }

            
return  newpowerstr;
        }

 

 

        /// <summary>
        /// 检查是否拥有某项权限
        /// </summary>
        /// <param name="powerids">用户权限串</param>
        /// <param name="powerid">检测权限位</param>
        /// <returns>是否有权限:true-有权限,false-没权限</returns>
        public static bool CheckPower(string powerids, int powerid)
        {
            //如果检查权限位大于权限串长度,则说明没有权限
            if (powerids.Length < powerid || powerid < 1)
                return false;
            return powerids[powerid - 1].Equals('1');
        }

 

在页面中通过 CheckPower判断该权限位是否存在 存在则显示不存在则该菜单不显示

<%if(!page.CheckPower(1)){ %>
<p class="menu_t" onclick="menu0(1)">
    <strong class="menu_ts"><a href="news_admin.html">资讯管理</a></strong><span class="arrow"><img
        id="img_01" src="images/arrow_02.gif" title="收起" alt="收起" /></span></p>
<div id="info001">
    <ul class="menu_c">
        <li><a href="#"><em>&middot;</em>站内信列表</a></li>
        <li><a href="#"><em>&middot;</em>系统提醒邮件</a></li>
        <li><a href="#"><em>&middot;</em>群发邮件</a></li>
    </ul>
</div>
<%} %>

 

你可能感兴趣的:(权限管理)