权限控制的另类做法

时间:2021-03-18 15:25:20

可以用把数字转换为二进制来反推某一个位置,来知道是否某个组开发给用户,虽然并不十分常用,但是挺有意思。

 /// <summary>
        /// 由权限和创建权限字符串
        /// </summary>
        /// <param name="PowerSum"></param>
        /// <returns></returns>
        public static string PowerStrCreate(int PowerSum)
        {
            string Result = "";
            int Calc = PowerSum;
            while (Calc > 0)
            {
                Result = Result + Calc % 2;
                Calc /= 2;
            }
            //if (PowerSum % 2 == 0)
            //    Result = "0" + Result;
            while (Result.Length < 20)
            {
                Result += "0";
            }
            return Result;
        }

   这边先根据数字来得到二进制,比如说8的二进制是1000,然后用下来的数字位数来判断是否可以展示:

  /// <summary>
        /// 权限检查
        /// </summary>
        /// <param name="User"></param>
        /// <param name="PowerCheck"></param>
        /// <returns></returns>
        public static bool PowerCheck(UserInfo User, int PowerCheck)
        {
            if (PowerCheck < 0)
                return true;
            bool Result = false;
            try
            {
                if (User.PowerStr[PowerCheck] == '1')
                    Result = true;
            }
            catch { }
            return Result;
        }

当然前端页面要做控制

     if (PowerCheck((int)Fund.Web.Admin.Web.EntityLayer.User.UserPower.HistoryNav))
                        {
                    %>

                    <div class="itembox">
                        <span class="itemtitle">基金最新净值</span>
                        <ul>
                            <li><a href="/NewNav/NVInit.aspx">封闭式净值初始化</a></li>
                            <li><a href="/NewNav/OpenNV.aspx">开放式基金净值</a></li>
                            <li><a href="/NewNav/QDNV.aspx">QDII型基金净值</a></li>
                            <li><a href="/NewNav/HBNV.aspx">货币型基金净值</a></li>
                            <li><a href="/NewNav/LCNV.aspx">理财型基金净值</a></li>
                            <li><a href="/NewNav/CloseNav.aspx">封闭式基金净值</a></li>
                        </ul>
                    </div>
                    <div class="itembox">
                        <span class="itemtitle">基金历史净值</span>
                        <ul>
                            <%--<li><a href="/HistoryNav/OFNV.aspx">历史净值</a></li>--%>
                             <li><a href="/HistoryNav/HighEndNetFinancial.aspx">高端理财净值</a></li>
                            <li><a href="/HistoryNav/MFMU.aspx">货币基金净值</a></li>
                        </ul>
                    </div>
                    <%  
                        } 

  这样定义一组枚举变量的数值就能让某一位来代表一个权限。

 public enum UserPower
    {
        Main = 0,
        ClassFund = 1,
        FeeRate = 2,
        HistoryNav = 3,
        Evaluate = 4,
        Research = 5,
        TopicMan = 6,
        FAQ = 7,
        TaskWrite=8,
        SC=9,
        NavGrab=10
    }