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