我的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文档进行后处理以解析信息并以可读的形式呈现。
我很好奇是否有其他人有类似需求,是否有任何工具或流程可以解决这个问题?
答案 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"/>
</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