• 简单的角色权限管理


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

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

    在页面中读取即可

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

    主建  角色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<intstring> p1 = new Dictionary<intstring>();
                IDictionary
    <intstring> p2 = new Dictionary<intstring>();
                
    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>
    <%} %>

  • 相关阅读:
    python的json模块介绍
    采用boosting思想开发一个解决二分类样本不平衡的多估计器模型
    kappa系数
    android服务
    Android Studio 无法预览布局问题:com/android/util/PropertiesMap
    pitch yaw roll是什么
    keil5破解
    Eclipse/jre/jdk/jvm
    传感器
    Java静态代码块
  • 原文地址:https://www.cnblogs.com/aaa6818162/p/1519813.html
Copyright © 2020-2023  润新知