ASP.NET MVC Comment appliquer le rendu de vue basé sur un rôle ou sur une authentification?

StackOverflow https://stackoverflow.com/questions/802073

Question

Je souhaite afficher / masquer certaines parties d'une vue en fonction du statut d'authentification ou des rôles. Pour mes actions de contrôleur, j'ai étendu ActionFilterAttribute afin que je puisse attribuer certaines actions.

<RequiresRole(Role:="Admin")> _
Function Action() as ActionResult
    Return View()
End Function

Existe-t-il un moyen similaire (attribution) que je peux utiliser dans les vues? (donc pas comme ça: Comment créer une vue avec différents affichages en fonction du rôle de l'utilisateur? )

Était-ce utile?

La solution

Vous pouvez accéder aux rôles connectés de l'utilisateur à partir de la vue, comme suit:

<% if (Page.User.IsInRole("Admin")) { %>
        <td>
          <%= Html.DeleteButton("delete", model.ID) %>
        </td>
<% } %>

et peut-être votre méthode d'extension avec quelque chose comme:

public static string DeleteButton(this HtmlHelper html, 
    string linkText, int id)
{
    return html.RouteLink(linkText,
     new { ID = id, action = "Delete" },
     new { onclick = "$.delete(this.href, deleteCompleted()); return false;" });
}

Évidemment, j'utilise JavaScript pour exécuter une action HTTP DELETE sur mon contrôleur, afin d'empêcher les robots d'exploration de supprimer accidentellement la suppression de données par mes pages. Dans mon cas, j'étends JQuery avec une méthode delete () pour compléter le verbe HTTP.

Autres conseils

Je savais que cela existait, mais qu’il a fallu un certain temps Voici ce que j'utilise:

<asp:LoginView runat="server">
    <AnonymousTemplate>
        You are not logged in yet. Please log in.
    </AnonymousTemplate>
    <RoleGroups>
        <asp:RoleGroup Roles="Admin">
            <ContentTemplate>
                You are an Admin.
            </ContentTemplate>
        </asp:RoleGroup>
        <asp:RoleGroup Roles="Customers">
            <ContentTemplate>
                You are a customer.
            </ContentTemplate>
        </asp:RoleGroup>
    </RoleGroups>
    <LoggedInTemplate>
        Simple Log in check
    </LoggedInTemplate>
</asp:LoginView>

Cela vous permet d'afficher différents contenus à différents utilisateurs en fonction de leur état de connexion ou de leurs informations d'identification.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top