0

我需要扩展 asp:Menu 以支持链接到 MVC 路由(我的项目混合了 MVC 和非 MVC 页面)。我的菜单是使用自定义类生成的,该类根据用户对其引用的文件的权限确定是否应向用户显示节点。

MVC 页面使用 AuthorizeAttribute 进行限制。避免嘲笑(如果可能的话)我想

  1. 确定路径是指 MVC 页面还是标准页面
  2. 如果是MVC,判断用户是否有权限访问它

这是我在菜单生成类中的方法签名:

Private Function CanAccessPage(path As String) As Boolean
4

1 回答 1

0

这是我用于此的算法,

  1. 基于@SLaks answer here,我能够确定路径是否引用了 MVC 路由。
  2. 如果是 MVC,我获取了控制器类型(这需要知道我的控制器所在的命名空间)
  3. 通过 controllerType.GetMethods(actionMethodName) 获取操作方法(如果您有多个具有相同名称的方法,则必须选择链接所指的方法。可能是具有 HttpGet 属性的方法)。
  4. 使用 actionMethodInfo.GetCustomAttributes(GetType(AuthorizationAttribute), False) 来获取指定操作的所有授权过滤器的集合
  5. 使用我在步骤 1 中为每个属性构建的虚假上下文信息调用 OnAuthorization。
  6. 检查 TypeOf filterContext.Result 是否为 HttpUnauthorizedResult 并相应返回
于 2012-07-23T10:57:26.247 回答