ASP.NET MVC security: Как проверить, разрешен ли метод контроллера для выполнения в соответствии с perrmissions текущего пользователя
Учитывая, что ASP.NET объявление класса контроллера MVC:
public class ItemController : Controller
{
public ActionResult Index()
{
// ...
}
public ActionResult Details()
{
// ...
}
[Authorize(Roles="Admin, Editor")]
public ActionResult Edit()
{
// ...
}
[Authorize(Roles="Admin")]
public ActionResult Delete()
{
// ..
}
}
Мне нужно отразить список методов в этом классе, которые могут быть вызваны с правами текущего пользователя.
Пожалуйста, поделитесь некоторыми идеями о том, что можно было бы сделать в этом случае.1 ответ:
Ну а для нового вопроса придумайте что-нибудь вроде:
new ReflectedControllerDescriptor(typeof(ItemController)).GetCanonicalActions()
Можно использовать для возврата списка всех доступных действий. У меня его нет. ASP.NET MVC доступен мне на работе, поэтому я не могу проверить, действительно ли ActionDescriptor возвращается тем, что будет содержать какой-то параметр, который говорит, какие члены могут их выполнять.
Http://msdn.microsoft.com/en-us/library/system.web.mvc.actiondescriptor_members%28v=VS.90%29.aspx
То есть члены ActionDescriptor, вы могли бы найти что-то там. Я посмотрю сегодня вечером, смогу ли я это понять, это меня немного заинтриговало.
Для всех приложений не существует универсальной системы входа/аутентификации пользователя, поэтому создать "универсальное решение" действительно невозможно. Вы можете создать свои собственные классы входа пользователя и авторизации, которые затем вы добавляете свои собственные аннотации к методам, чтобы сделать, но его будет иметь те же ограничения, что и asp.net система mvc имеет, его только для вашего входа / авторизации системы (или кто расширяет эту систему).