Документирование использования атрибута [Authorize], создание отчета - PullRequest
1 голос
/ 24 февраля 2012

Многие классы и методы в моем приложении ASP.NET MVC 3 снабжены атрибутом [Authorize] , например:

[Authorize(Roles = "assignment_edit, assignment_view")] 
public class AssignmentController : Controller {

или это:

[HttpPost]
[Authorize(Roles = "assignment_edit")]
public ActionResult Create(AssignmentViewModel assignment)
{

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

Я рассмотрел использование встроенной документации C # и использование тега типа remarks для хранения этой информации, а затем , вывод ее в xml-файл , но это кажется неуклюжим - мне нужно было бы повторно ввести информацию, которая могла бы не синхронизироваться с атрибутом, и постобработать XML-документ, чтобы проанализировать информацию и представить ее в читаемой форме.

Мне любопытно, была ли у кого-то еще аналогичная потребность и существуют ли какие-либо инструменты или процессы для решения этой проблемы?

Ответы [ 2 ]

1 голос
/ 24 февраля 2012

Я использую ASP.NET MVC SiteMap провайдера http://mvcsitemap.codeplex.com/ также можно найти в Nuget

Установка ролей в файле .sitemap

<mvcSiteMapNode title="Home"  controller="Home" action="Index">
<mvcSiteMapNode title="About" controller="Home" action="About" roles="Admin,Users"/>
<mvcSiteMapNode title="LogOn" controller="Home" action="LogOn"/&gt
</mvcSiteMapNode>

А если запрос не прошел проверку подлинности

Sitemap.CurrentNode будет нулевым Поэтому я добавляю ActionFiliter

public class RolesAuthenticationAttribute : ActionFilterAttribute, IAuthorizationFilter
{
    public void OnAuthorization(AuthorizationContext filterContext)
    {
        if (SiteMap.CurrentNode == null)
        {
            throw new UnauthorizedAccessException();
        }
    }
}

В контроллере

[RolesAuthenticationAttribute]
public class HomeController : Controller
{
0 голосов
/ 24 февраля 2012

Доступно несколько инструментов, например,

Чтобы добавить документацию в ваш метод или класс, вы можете использовать " GhostDoc "

Для создания файла документации изВы можете использовать « VSDocMan »

. Для бесплатных продуктов

. Можно использовать SandCastle

.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...