Однако являются ли они хорошим способом ограничения доступа пользователей?
Я бы сказал, нет, не с точки зрения безопасности, а с точки зрения удобства обслуживания.Представления должны быть представлением данных в формате HTML.Смешивание логики непосредственно в представлении должно быть максимально ограничено просто для удобства сопровождения.
Таким образом, следующая логика
@if (ViewBag.UserType == 1)
{
Html.RenderPartial("PartialView/_StandardUser");
}
else if (ViewBag.UserType == 2)
{
Html.RenderPartial("PartialView/_AdminUser");
}
Может быть просто заменена на:
представление:
@{Html.RenderAction("UserView");
метод контроллера:
public class SomeController
{
public ActionResult UserView()
{
if (ViewBag.UserType == 1)
{
return Partial("PartialView/_StandardUser");
}
else if (ViewBag.UserType == 2)
{
return Partial("PartialView/_AdminUser");
}
return new EmptyResult();
}
}
Может ли частичное представление вообще быть доступным для неавторизованных пользователей в моей текущей настройке.
Есликод, который вы указали, является единственным кодом, который возвращает эти Частицы, тогда ответом будет да .Однако его логика скрыта в виде, который я бы никогда не рекомендовал.