Как отличить обычного пользователя от администратора в asp.net mvc

#c# #asp.net #asp.net-mvc

#c# #asp.net #asp.net-mvc

Вопрос:

Я делаю asp.net проект mvc, и я хочу отличать сеанс пользователя от сеанса администратора.

В моем первоначальном представлении у меня есть этот код, чтобы отличать вошедшего в систему пользователя от не вошедшего в систему пользователя:

     <ul class="nav navbar-nav" style="float:right !important">
        @if (Request.IsAuthenticated)
        {
            using (Html.BeginForm("Logout", "User", FormMethod.Post, new { id = "logoutForm" }))
            {
                <div class="dropdown">
                    <button class="dropbtn">Bem vindo à nossa loja, @Session["FirstName"]</button>

                    <div class="dropdown-content">
                        <a href="javascript:document.getElementById('logoutForm').submit()">Logout</a>
                        <a>@Html.ActionLink("Editar Perfil", "Profile", "User")</a>
                    </div>
                    }

                </div>
            }

            <div>

                <a>@Html.ActionLink("E-Commerce", "ECommerce", "User")</a>
                <a>@Html.ActionLink("Agendar Visita", "Booking", "User")</a>
            </div>
        }
        else
        {
            <li>@Html.ActionLink("Sobre", "About", "User")</li>
            <li>@Html.ActionLink("Registo", "Registration", "User")</li>
            <li>@Html.ActionLink("Entrar", "Login", "User")</li>
        }
    </ul>
 

Пытаясь использовать тот же подход, чтобы отличить сеанс пользователя от сеанса администратора, я сделал это:

 <ul class="nav navbar-nav" style="float:right !important">
                    @if (Request.IsAuthenticated)
                    {
                        if (@Session["FirstName"] == "admin")
                        {
                            using (Html.BeginForm("Logout", "User", FormMethod.Post, new { id = "logoutForm" }))
                            {
                                <div class="dropdown">
                                    <button class="dropbtn">Bem vindo, admin</button>

                                    <div class="dropdown-content">
                                        <a href="javascript:document.getElementById('logoutForm').submit()">Logout</a>
                                    </div>
                                    }

                                </div>
                            }

                            <div>

                                <a>@Html.ActionLink("Configurar Layoyt", "ConfLayout", "Admin")</a>
                                <a>@Html.ActionLink("Adicionar Website", "AddWebsite", "Admin")</a>
                            </div>
                        }
                        else
                        {
                            using (Html.BeginForm("Logout", "User", FormMethod.Post, new { id = "logoutForm" }))
                            {
                                <div class="dropdown">
                                    <button class="dropbtn">Bem vindo à nossa loja, @Session["FirstName"]</button>

                                    <div class="dropdown-content">
                                        <a href="javascript:document.getElementById('logoutForm').submit()">Logout</a>
                                        <a>@Html.ActionLink("Editar Perfil", "Profile", "User")</a>
                                    </div>
                                    }

                                </div>
                            }

                            <div>

                                <a>@Html.ActionLink("E-Commerce", "ECommerce", "User")</a>
                                <a>@Html.ActionLink("Agendar Visita", "Booking", "User")</a>
                            </div>
                        }

                    }
                    else
                    {
                        <li>@Html.ActionLink("Sobre", "About", "User")</li>
                        <li>@Html.ActionLink("Registo", "Registration", "User")</li>
                        <li>@Html.ActionLink("Entrar", "Login", "User")</li>
                    }
                </ul>
 

… но это не решило мой вопрос.

Правильно ли я использую подход?

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

1. Вам нужно создать роли для пользователей. А затем роль поставщика. Сделав это, вы сможете использовать @User.IsInRole("Admin") .

2. Я никак не могу сделать это с помощью атрибутов моей формы регистрации?

3. Попробуйте TempData вместо Session . Но это не лучшая практика. Если у вас есть роли для пользователей, вам необходимо создать механизм авторизации.

4. Я создал новый проект и добавил роли. Спасибо