隐藏母版页中的导航栏取决于我的用户角色

时间:2012-11-30 08:03:36

标签: c# asp.net

您好我在使用网页表单时遇到问题,并且我有一个包含我的导航的母版页,我想问一下,登录后我的导航栏可以根据不同的角色进行自定义(管理员,学生,工作人员)..

        <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;然后主持人和主管的网站管理员导航栏可以隐藏用户,请在那里建议我有更好的解决方案,因为这只是我知道..谢谢..

3 个答案:

答案 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");
     }