c# - tipos - Comprobación del rol de usuario de inicio de sesión en la página de afeitar
roles y permisos asp net (2)
La respuesta de Dave es correcta. Sugeriría que considere usar una propiedad en su modelo llamada IsAdministrator
o CanSeeSidebar
y trate de responder esa pregunta como lógica de dominio .
La vista debería funcionar solo con el modelo. Ver el hilo, leer de una base de datos, son lo mismo con respecto a que responden preguntas de dominio. Todos esos tipos de preguntas se deben responder antes de que su controlador le entregue el modelo a la vista.
@if (Request.IsAuthenticated && User.Identity.Name=="administrator")
{
<div id="sidebar">
<div class="module">
<ul class="menu">
<li>@Html.ActionLink("Home", "Index", "Home")</li>
<li>@Html.ActionLink("About", "About", "Home")</li>
<li>@Html.ActionLink("Contact", "Contact", "Home")</li>
</ul>
</div>
<div class="mainContent">
Hello, @User.Identity.Name !
</div>
</div>
Este es mi diseño si el usuario se autentica como administrador pero este tipo de verificación no se ve bien, necesito verificar el rol del usuario, no su nombre.
Aquí está el método de control
public ActionResult AuthenticatedUserLayout(string username)
{
var lst=userContext.UserProfiles.ToList();
var user = lst.Select(u => u.UserName == username);
if(IsAdmin(Session["LoginUser"].ToString())) return View(user); else return Index();
}
También encuentro que la return View(user)
no es buena, porque no sé cómo hacer uso de ese user
.
@if (Request.IsAuthenticated && User.IsInRole("Administrators"))
{
<div id="sidebar">
<div class="module">
<ul class="menu">
<li>@Html.ActionLink("Home", "Index", "Home")</li>
<li>@Html.ActionLink("About", "About", "Home")</li>
<li>@Html.ActionLink("Contact", "Contact", "Home")</li>
</ul>
</div>
<div class="mainContent">
Hello, @User.Identity.Name !
</div>
</div>
}