В моем приложении MVC у меня есть несколько разных ролей: Admin, General User и т.д. и т.д.
Я знаю, что могу применить защиту для своих контроллеров через атрибут Authorize:
[Authorize(Roles="Admin")]
public ActionResult Create()
{
return View();
}
Но мне также необходимо применить некоторую безопасность к представлениям, чтобы не отображать определенные разделы представления для определенных ролей:
@if( User.IsInRole("Admin") )
{
@Html.ActionLink("Create", "Create")
}
Лучше ли это сделать выше, или обрабатывать такую защиту в ViewModel:
public ActionResult Index()
{
var model = new IndexViewModel();
model.CanCreate = User.IsInRole("Admin");
return View(model);
}
View:
@( Model.CanCreate )
{
@Html.ActionLink("Create", "Create")
}
Есть ли у второго метода какие-либо преимущества по сравнению с первым или это просто предпочтение?