Скрытие ссылок из определенных ролей в ASP.NET MVC5

Значит, это может показаться глупым вопросом, но как показать ссылку только для пользователя admin?

Предположим, что обычный пользователь видит следующие ссылки:
Главная/О компании/Контакт

И пользователь-администратор видит следующие ссылки:
Главная/О нас/Контакт/Админ

Я попытался ограничить контроллер и связать контроллер с меню. Но он по-прежнему показывает ссылку для всех, просто не разрешает доступ никому, кроме администратора

Можно ли перегрузить представления?

Ответ 1

В зависимости от того, какой тип членства/поставщика услуг вы используете, вы должны просто проверить непосредственно из представления, если пользователь зарегистрирован и в конкретной роли.

Итак, у вас будет что-то вроде:

@Html.ActionLink("Index", "Home") 
@Html.ActionLink("About", "Home") 
@Html.ActionLink("Contact", "Home") 
@if ( User.Identity.IsAuthenticated ){
    if ( User.IsInRole("Admin") ){
        @Html.ActionLink("Admin", "AdminController")        
    }
}

И не забудьте добавить атрибут [Authorize] к вашему методу Admin:

[Authorize(Roles="Admin")]
public ActionResult Admin()
{
    // ...
    return View();
}