记录[授权]属性的使用情况,生成报告
本文关键字:情况 报告 用情 授权 属性 记录 | 更新日期: 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"/>
</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