简单的角色权限管理

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

 

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

 

在页面中读取即可

 

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

主建  角色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" οnclick="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>
<%} %>

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值