He visto algunas preguntas similares, pero ninguna que se parece a lo que estoy tratando de hacer.Construyendo un menú de página maestra ASP.NET MVC dinámicamente, basado en el "Rol" del usuario actual
Ésta es mi actual aplicación w/a ningún tipo de seguridad:
<div id="menucontainer">
<ul id="menu">
<li><%= Html.ActionLink("Main List", "Index", "AController")%></li>
<li><%= Html.ActionLink("Product List", "Index", "BController")%></li>
<li><%= Html.ActionLink("Company List", "Index", "CController")%></li>
<li><%= Html.ActionLink("User List", "Index", "DController")%></li>
</ul>
</div>
Esto está muy bien, y las obras anteriores. Tengo [Autorizar] Configuración de atributos en las Acciones para CController y DController para evitar el acceso no autorizado, pero me gustaría eliminar esos elementos del menú para los usuarios que no tienen el Rol correcto, porque cuando lo ven y hacen clic en él y les dice que no tienen permiso, lo querrán. Si ellos no saben que está ahí, eso es mejor para todos los involucrados ...
Algo como esto es en última instancia el objetivo que trato de alcanzar, pero estoy buscando el enfoque MVC con más sabores, donde la "vista" es "tonto":
<div id="menucontainer">
<ul id="menu">
<li><%= Html.ActionLink("Main List", "Index", "AController")%></li>
<li><%= Html.ActionLink("Product List", "Index", "BController")%></li>
<% If(Role = Roles.Admin) { %>
<li><%= Html.ActionLink("Company List", "Index", "CController")%></li>
<li><%= Html.ActionLink("User List", "Index", "DController")%></li>
<% } %>
</ul>
</div>
Yo soy ... Creo. Hay dos niveles de usuario, Normal y Admin. Solo el administrador puede ver las listas de empresas y usuarios, los atributos [Autorizar] en el controlador evitan el acceso no autorizado, pero quiero ocultar la vista de los que no son de administrador para que ni siquiera se den cuenta de que está ahí en su cabeza. – Nate