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