ASP.NET MVC Como aplicar baseada em funções ou autenticação baseada em Ver prestação?

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

Pergunta

eu quero para exibir / ocultar certas partes de uma visão baseada em autenticação de status ou funções. Por minhas ações de controlador Eu tenho estendido ActionFilterAttribute para que eu possa atribuir certas ações.

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

Existe um semelhante modo (atribuir) que eu posso usar nas vistas? (Por isso não como este: Como posso criar uma exibição que tem diferentes telas de acordo com o papel que o usuário está em? )

Foi útil?

Solução

Você pode acesso do usuário logado papéis do ponto de vista como este:

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

e talvez o seu método de extensão com algo como:

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;" });
}

Obviamente, eu estou usando JavaScript para executar um HTTP DELETE para minha ação do controlador, para evitar crawlers página a exclusão acidental de dados de obter minhas páginas. No meu caso eu estou estendendo JQuery com um método delete () para complementar o verbo HTTP.

Outras dicas

I novo este existia, mas demorou um pouco para encontrar. Aqui está o que eu estou usando:

<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>

Isso permite mostrar conteúdo diferente para diferentes usuários com base em seu estado de login ou credenciais.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top