ASP.NET MVC Как применить рендеринг представления на основе ролей или аутентификации?

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

Вопрос

я хочу показать / скрыть определенные части представления на основе статуса аутентификации или Ролей.Для моих действий с контроллером я расширил ActionFilterAttribute, чтобы я мог приписывать определенные действия.

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

Есть ли какой-нибудь Похожие способ (атрибуция), который я могу использовать в Представлениях?(так не похоже на это: Как я могу создать представление, которое имеет разные дисплеи в зависимости от роли, в которой находится пользователь?)

Это было полезно?

Решение

Вы можете получить доступ к ролям пользователя, вошедшего в систему, из представления следующим образом:

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

и, может быть, ваш метод расширения с чем-то вроде:

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

Очевидно, что я использую JavaScript для выполнения HTTP-УДАЛЕНИЯ моего действия контроллера, чтобы предотвратить случайное удаление данных поисковыми роботами с моих страниц.В моем случае я расширяю jQuery методом delete(), чтобы дополнить HTTP-глагол.

Другие советы

Я знал, что это существовало, но потребовалось некоторое время, чтобы найти.Вот что я использую:

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

Это позволяет показывать разный контент разным пользователям в зависимости от их состояния входа в систему или учетных данных.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top