Pregunta

quiero mostrar / ocultar ciertas partes de una vista en función del estado de autenticación o roles. Para las acciones de mi controlador, extendí ActionFilterAttribute para poder atribuir ciertas Acciones.

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

¿Hay una forma similar (atribución) que puedo usar en las Vistas? (no así: ¿Cómo puedo crear una vista que tenga diferentes pantallas de acuerdo con el rol en el que se encuentra el usuario? )

¿Fue útil?

Solución

Puede acceder a las funciones de inicio de sesión del usuario desde la vista de esta manera:

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

y tal vez su método de extensión con 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, estoy usando JavaScript para realizar una acción DELETE HTTP en mi controlador, para evitar que los rastreadores de páginas eliminen accidentalmente los datos de mis páginas. En mi caso, estoy extendiendo JQuery con un método delete () para complementar el verbo HTTP.

Otros consejos

Nuevo esto existía, pero tomó un tiempo para encontrar. Esto es lo que estoy 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>

Esto le permite mostrar contenido diferente a diferentes usuarios en función de su estado de inicio de sesión o credenciales.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top