Member 12605293 Ответов: 2

Мне нужно отключить пункт меню из меню управления главной страницей для конкретного пользователя в ASP.NET использование C#


Привет я закончил веб сайт и мне нужно контролировать другого пользователя от просмотра всех страниц контента кроме администратора

Что я уже пробовал:

My masterpage.aspx<br />
<pre><div class="menu"><br />
<br />
            <ul><br />
<br />
                <li class="navigation_first_item"><a id="menu1" href="/KB/answers/Default.aspx" runat="server">Home</a></li><br />
                <li class="navigation_s"><a id="menu2" href="/KB/answers/Add User.aspx" runat="server">Add User</a></li><br />
                <li><a id="menu3" href="/KB/answers/Registrationpage.aspx" runat="server">Register Employee</a></li><br />
                <li><a id="menu4" href="/KB/answers/Contact.aspx" runat="server">Contact</a></li><br />
            </ul><br />
<br />
        </div></pre>


My mastrpage.cs

 protected void Page_Load(object sender, EventArgs e)
        {
           
                            lbltime.Text = DateTime.Now.ToString("hh:mm tt");
                lblusername.Text = Session["username"].ToString();


                var menu = Page.Master.FindControl("Menu1") as Menu;
                if (Session["level"] == null)
                {
                    menu.Items.Remove(menu.FindItem("AddUser.aspx"));
                    menu.Items.Remove(menu.FindItem("Register.aspx"));
                }
                else if ((Session["Admin"].ToString().Equals("Contact.aspx")))
                {
                    menu.Items.Remove(menu.FindItem(" "));
                    menu.Items.Remove(menu.FindItem(""));
                    menu.Items.Remove(menu.FindItem(""));
                    menu.Items.Remove(menu.FindItem(""));
                }

            }
Loginpage.cs
 protected void Page_Load(object sender, EventArgs e)
        {
            var menu = Page.Master.FindControl("menu") as Menu;
            if (Session["level"] == null)
            {
                menu.Items.Remove(menu.FindItem("menu1"));
                menu.Items.Remove(menu.FindItem("menu2"));
            }
            else if (Session["level"] == "ADMIN")
            {
                menu.Items.Remove(menu.FindItem("menu4"));
                menu.Items.Remove(menu.FindItem("menu3"));
            }
            MenuItemCollection menuItems = menu.Items;
            MenuItem menuItem = new MenuItem();
            foreach (MenuItem item in menuItems)
            {
                if (item.Text == "Default.aspx")
                    menuItem = item;
            }
        }

2 Ответов

Рейтинг:
0

Zafar A khan

if ((Session["Admin"].ToString().Equals("Contact.aspx")))
                {
                    menu.Items.RemoveAt(1);
                    menu.Items.RemoveAt(2);
                    menu.Items.RemoveAt(3);
                    menu.Items.RemoveAt(4);
                }


Рейтинг:
0

Arvind Zamakia

да, вы можете использовать клиентские серверные скрипты. переменная сеанса аутентификации для проверки того, авторизован этот пользователь или нет. следующий простой пример.

<% If CType(Session("User"), User).IsAdmin) Then%>
    <li id="liUsers" runat="server"><a href="/KB/answers/Users.aspx">User List</a></li>
    <% End If%>


если пользователь является администратором, то его отображаемый список пользователей


Member 12605293

Привет Арвинд,он не работает там никаким другим способом, как передача идентификаторов страницы и ограничение

Arvind Zamakia

это тоже работает. можете ли вы дать мне подробную информацию о том, где вы храните данные пользователя? вы использовать куки или сессии строк

Member 12605293

Привет Арвинд
Это код
если (lblusername.Text = Session ["имя пользователя"])
{
элемент menu1.Видимое = истинное;
menu2.Видимое = истинное;
menu3.Видимое = истинное;
menu4.Видимое = истинное;
}
}

ещё
{
menu2.Видна = ложь;
menu3.Видна = ложь;
}

Arvind Zamakia

попробуйте этот код на Page_Int