[英]How to generate menu based on roles using bootstrap and asp.net?
I am trying to hide and display menus based on roles while using bootstrap in asp.net. 我正在尝试在asp.net中使用引导程序时根据角色隐藏和显示菜单。
I am using the navigation menu on the left of this template. 我正在使用此模板左侧的导航菜单。 http://ironsummitmedia.github.io/startbootstrap-sb-admin-2/pages/index.html
http://ironsummitmedia.github.io/startbootstrap-sb-admin-2/pages/index.html
Here's an example of my design. 这是我设计的一个例子。
<!-- /.navbar-top-links -->
<div class="navbar-default sidebar" role="navigation" >
<div class="sidebar-nav navbar-collapse">
<ul class="nav" id="side-menu">
<li>
<a href="../Home.aspx"><i class="fa fa-pencil-square-o fa-fw"></i> <font color = "000000"><b>Home</b></font></a>
</li>
<li>
<a href="CreateCCF.aspx"><i class="fa fa-pencil-square-o fa-fw"></i> <font color = "000000"><b>Request New </b></font></a>
</li>
<li>
<a href="#"><i class="fa fa-folder-open-o fa-fw"></i> <font color = "000000"> <b>My Requested </b></font><span class="fa arrow"></span></a>
<ul class="nav nav-second-level">
<li>
<a href="ReqDraft.aspx">Draft</a>
</li>
<li>
<a href="ReqOpen.aspx">Open</a>
</li>
<li>
<a href="ReqClose.aspx">Close</a>
</li>
<li>
<a href="ReqViewAll.aspx">View All</a>
</li>
</ul>
<li>
<a href="#"><i class="fa fa-pencil-square-o fa-fw"></i> <font color = "000000"><b>For My Approval</b></font><span class="fa arrow"></span></a>
<ul class="nav nav-second-level">
<li>
<a href="PendingApproval.aspx">Pending for Approval</a>
</li>
<li>
<a href="Approved.aspx">Approved</a>
</li>
<li>
<a href="Rejected.aspx">Rejected</a>
</li>
</ul>
</li>
</li>
<li>
<a href="#"><i class="fa fa-folder-open-o fa-fw"></i> <font color = "000000"> <b>For Assignee</b></font><span class="fa arrow"></span></a>
<ul class="nav nav-second-level">
<li>
<a href="AsgOpen.aspx">Open</a>
</li>
<li>
<a href="AsgClose.aspx">Close</a>
</li>
<li>
<a href="AsgViewAll.aspx">View All</a>
</li>
</ul>
</li>
<li>
<a href="#"><i class="fa fa-folder-open-o fa-fw"></i> <font color = "000000"> <b>Administration</b></font><span class="fa arrow"></span></a>
<ul class="nav nav-second-level">
<li>
<a href="AllPending.aspx">All Pending Approval</a>
</li>
<li>
<a href="AllClosed.aspx">All Closed </a>
</li>
</ul>
</li>
</div>
<!-- /.sidebar-collapse -->
</div>
<!-- /.navbar-static-side -->
</nav>
For example, I would like the normal users to have access to 'Request New' and 'My Requested' only. 例如,我希望普通用户只能访问“请求新”和“我的请求”。 And for approvers, they would be able to access 'For My Approval' only.
对于批准者,他们将只能访问“获得我的批准”。
I have tried using this method, however, its not for bootstrap. 我尝试使用此方法,但是,它不适用于引导程序。
public void generateMenu()
{
DataTable dt = new DataTable();
ArrayList parInput = new ArrayList();
string strMenu = "";
strMenu = "<table border='1' cellpadding='4' cellspacing='4' width='100%'>";
parInput.Add("@RoleID");
parInput.Add(Convert.ToInt32(Session["RoleID"].ToString()));
parInput.Add("@AppID");
parInput.Add("2");
dt = db.ExecSQLQuery(strSQLConn, "master_spGetMenuLink", parInput);
foreach (DataRow dr in dt.Rows)
{
if (dr[1].ToString() == "NA")
{
strMenu += " <tr class='MenuLinkHeader'><td>" + dr[0].ToString() + "</td></tr>";
}
else
{
if (dr[0].ToString() != "Create New")
{
if (dr[0].ToString() == "Create CCF" && ((Session["SubGroup"].ToString() == "AB") || (Session["SubGroup"].ToString() == "AC")))
{
strMenu += " <tr class='MenuLink'><td><a href='" + dr[1].ToString() + "'>" + dr[0].ToString() + "</td></tr>";
}
else
{
strMenu += " <tr class='MenuLink'><td><a href='" + dr[1].ToString() + "'>" + dr[0].ToString() + "</td></tr>";
}
}
}
}
strMenu += "</table>";
Response.Write(strMenu);
}
I suggest, after logging in of the user, check for the role of the user. 我建议在登录用户后,检查用户的角色。 Then, put it on a Session.
然后,将其放在会话中。 (Session["Role"]).
(会话[“角色”])。
For every page on Page_Load, make some condition if the Role has the access on a particular page. 对于角色的特定页面具有访问权限,请为Page_Load上的每个页面设置一些条件。 If not, redirect to Home/Default.
如果没有,请重定向到“主页/默认”。
Because hiding a navigation is not pretty much accurate because it can access by typing the url on address page even if its hidden on navigation menu. 因为隐藏导航并不太准确,因为即使隐藏在导航菜单上,也可以通过在地址页上键入url进行访问。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.