#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. Я создал новый проект и добавил роли. Спасибо