Ho visto alcune domande simili, ma nessuna che assomiglia a quello che sto cercando di fare.Creazione di un menu Pagina principale ASP.NET MVC Dinamicamente, in base al "Ruolo" dell'utente corrente
Questo è il mio attuale implementazione w/out alcuna sicurezza:
<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>
Questo va bene, e le opere di cui sopra. Ho impostato [Autorizza] Attributi su Azioni per CController e DController per impedire l'accesso non autorizzato - ma vorrei rimuovere quegli elementi dal menu per gli utenti che non hanno il ruolo corretto, perché quando lo vedono e fanno clic su di esso e dice loro che non hanno il permesso, lo vorranno. Se non sanno che è lì, è meglio per tutte le persone coinvolte ...
Qualcosa di simile è in definitiva l'obiettivo che sto cercando di ottenere, ma sto cercando l'aproach più MVC Flavored, dove la "vista" è "stupido":
<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>
Io sono ... penso. Ci sono due livelli di utente, normale e amministratore. Solo gli admin possono vedere gli elenchi Company e User, gli attributi [Authorize] sul controller impediscono l'accesso non autorizzato, ma voglio nascondere la vista ai non-Admin in modo che non abbiano nemmeno l'idea che siano lì nella loro testa. – Nate