记录[授权]属性的使用情况,生成报告

本文关键字:情况 报告 用情 授权 属性 记录 | 更新日期: 2023-09-27 18:25:34

我的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#的内置文档,并使用备注之类的标记来存储这些信息,然后将其输出到xml文件中,但这似乎很笨拙——我需要重新键入可能与属性不同步的信息,然后对xml文档进行后处理,以解析信息并以可读的形式呈现。

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

记录[授权]属性的使用情况,生成报告

我使用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
{

有几种工具可用,例如,

要将文档添加到方法或类中,可以使用"GhostDoc"

要从上面的XML文档创建文档文件,可以使用"VSDocMan"

对于免费产品,

您可以使用SandCastle