Ограничить элементы ролью администратора и поставщиком членства в роли пользователя

#c# #asp.net #c#-4.0 #asp.net-membership

#c# #asp.net #c #-4.0 #asp.net-членство

Вопрос:

Здесь я хотел проверить, является ли роль пользователя администратором, а затем показывает все пункты меню, и если роль пользователя не является администратором, тогда отображаются общедоступные пункты меню.Но здесь нет никакой ошибки, но она показывает то же самое администратору и обычному пользователю

  <div class="nav-collapse collapse">
 <ul class="nav"> 
     <%if (Roles.IsUserInRole(System.Web.HttpContext.Current.User.Identity.Name, "Administrator"))
     {%>
<li class="active"><a href="Default.aspx">Home</a></li>

<li class="dropdown">
    <a href="#" data-toggle="dropdown" class="dropdown-toggle">Company <b class="caret"></b></a>
    <ul aria-labelledby="dLabel" role="menu" class="dropdown-menu">
        <li>
            <a href="CompanyProfile.aspx">Profile</a>
        </li>
        <li>
            <a href="FileData.aspx">FileData</a>
        </li>
    </ul>
</li>

<%}
 else
  { %>
<li class="active"><a href="Default.aspx">Home</a></li>

<li class="dropdown">
    <a href="#" data-toggle="dropdown" class="dropdown-toggle">Company <b class="caret"></b></a>
    <ul aria-labelledby="dLabel" role="menu" class="dropdown-menu">
        <li>
            <a href="CompanyProfile.aspx">Profile</a>
        </li>
    </ul>
</li>

<% }    
%>
</ul>
</div>
 </ul>
 </div> 
  

Комментарии:

1. И когда пользователь. Идентификация. Имя обычного пользователя, какое значение содержит? вы уверены, что обычный пользователь играет другую роль, чем администратор?, если меню доступно только для пользователей-администраторов, я буду проверять только роль <%if (Роли. IsUserInRole(«Администратор»))

2. Исправлено @MoisesCardenas

Ответ №1:

Для такого сценария вы хотите использовать элемент управления LoginView вместо жесткого кодирования класса C # внутри html-разметки, которая действительно хрупка и сложна в обслуживании.

Кроме того, если членство правильно настроено в вашем приложении, элемент управления LoginView будет корректно работать прямо из коробки.

 <asp:LoginView id="LoginView1" runat="server">
   <AnonymousTemplate>
      Please log in for personalized information.
   </AnonymousTemplate>
   <LoggedInTemplate>
     Thanks for logging in 
      <asp:LoginName id="LoginName1" runat="Server"></asp:LoginName>.
   </LoggedInTemplate>
   <RoleGroups>
      <asp:RoleGroup Roles="Administrator">
         <ContentTemplate>
            <div class="nav-collapse collapse">
               <ul class="nav"> 
                  <li class="active"><a href="Default.aspx">Home</a></li>
                   ....
                </ul>
             </div>
         </ContentTemplate>
      </asp:RoleGroup>
   </RoleGroups>
</asp:LoginView>