您好我在使用网页表单时遇到问题,并且我有一个包含我的导航的母版页,我想问一下,登录后我的导航栏可以根据不同的角色进行自定义(管理员,学生,工作人员)..
<asp:ContentPlaceHolder runat="server" ID="FeaturedContent" >
<nav>
<ul id="menu" style="text-align:center;">
<li><a href="~/">Moderator</a></li>
<li><a href="~/About.aspx">Supervisor</a></li>
<li><a href="~/Contact.aspx">Student</a></li>
</ul>
</nav>
</asp:ContentPlaceHolder>
所以这是我的sitemaster中contentplaceholder的样本,我的想法是当我与学生一起登录时隐藏主持人和主管,我希望使用检查角色&#34;学生&#34;然后主持人和主管的网站管理员导航栏可以隐藏用户,请在那里建议我有更好的解决方案,因为这只是我知道..谢谢..
答案 0 :(得分:4)
对于您的问题,我已更改您的HTML代码如下
<asp:ContentPlaceHolder runat="server" ID="FeaturedContent" >
<nav>
<ul id="menu" style="text-align:center;">
<li id="li_moderator" runat="server"><a href="~/">Moderator</a></li>
<li id="li_supervisor" runat="server"><a href="~/About.aspx">Supervisor</a></li>
<li><a href="~/Contact.aspx">Student</a></li>
</ul>
</nav>
</asp:ContentPlaceHolder>
登录验证后的服务器端编码和权限 学生可以隐藏或显示菜单。使用以下代码
li_moderator.style.add("display","none")
li_supervisor.style.add("display","none")
如果你想在其他情况下展示而不是使用
同样的事情 li_moderator.style.add("display","inherit")
li_supervisor.style.add("display","inherit")
答案 1 :(得分:3)
尝试建议:
<asp:ContentPlaceHolder runat="server" ID="FeaturedContent">
<nav>
<ul id="menu" style="text-align: center;">
<li id="menuModerator" runat="server"><a href="~/">Moderator</a></li>
<li id="menuSupervisor" runat="server"><a href="~/About.aspx">Supervisor</a></li>
<li id="menuStudent" runat="server"><a href="~/Contact.aspx">Student</a></li>
</ul>
</nav>
</asp:ContentPlaceHolder>
在Page_Load:
中的Site.Maste.cs中if (!Page.User.IsInRole("Moderator"))
{
menuModerator.Visible = false;
}
对于域组Page.User.IsInRole(@“Domain \ GroupName”)
答案 2 :(得分:1)
我像这样设置我的Enum ..
public enum AccessRights
{
LogisticsCoordinator_RW, //Read-Write,
LogisticsCoordinator_R, //Read only Purchasing and Inventory
ProcurementManager_RW, // Read-Write access to track purchase of Sand on monitor on hand Inventory
ProcurementManager_R, //read access to Create Frac Jobs , Dispatch and reroute
SystemAdministrator, //Full Rights to Vertex_Personnel only
StudentManagement_R, //Read Access Only
AppAdministrator_R,
NonAdmin,
None,
Full,
Default
}
现在我使用LDAP / ActiveDirectory来确定用户可以使用SQL Server的访问权限或其他一些检查用户权限的方法
这只是代码示例我不打算粘贴整个代码,但你应该明白这个想法
_ADPath = ConfigurationManager.AppSettings["ADPath"];
_Domain = ConfigurationManager.AppSettings["ISDDomain"];
_UserId = ((BasePage)Page).CurrentUser;
string[] strUser = _UserId.Split('\\');
if (strUser.Length == 2)
{
_UserId = strUser[1];
}
// uxLBLoginError.Text = "";
try
{
LdapAuthentication la = new LdapAuthentication(_ADPath);
if (!AdPassRequired)
{
//use this if password not required
_authenticated = la.IsUserGroupMember(_UserId, AdGroupToPass);
}
//else
//{
// // use this if password is required
// _authenticated = la.IsAuthenticated(_Domain, _UserId, strPassword);
//}
if (_authenticated)
{
//test the roles functionality
((BasePage)Page).GetDBRoleNames(_UserId);
Session["User_Initial_Validated"] = true;
Session["isDefault_Loaded"] = true;
Session["AccessRights"] = AccessRights.Default;
Session["UserId"] = _UserId;
//Response.Redirect("~/Default.aspx");
}