记录[授权]属性用法,生成报告

时间:2012-02-24 00:48:08

标签: c# asp.net-mvc

我的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 等标记来存储此信息,然后outputting it into an xml file,但似乎笨重 - 我需要重新键入可能与属性不同步的信息,并对XML文档进行后处理以解析信息并以可读的形式呈现。

我很好奇是否有其他人有类似需求,是否有任何工具或流程可以解决这个问题?

2 个答案:

答案 0 :(得分:1)

我使用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将为null 所以我添加一个ActionFiliter

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

在控制器

[RolesAuthenticationAttribute]
public class HomeController : Controller
{

答案 1 :(得分:0)

有几种工具可供选择, 例如,

要向您的方法或类添加文档,您可以使用“GhostDoc

要使用上述XML Documentations创建文档文件,您可以使用“VSDocMan

对于免费产品,

您可以使用SandCastle