【问题标题】:Check if curent user has access to specified MVC path检查当前用户是否有权访问指定的 MVC 路径
【发布时间】:2012-07-23 18:57:26
【问题描述】:

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

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

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

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

Private Function CanAccessPage(path As String) As Boolean

【问题讨论】:

    标签: asp.net asp.net-mvc asp.net-mvc-routing


    【解决方案1】:

    这是我用于此的算法,

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

    【讨论】:

      猜你喜欢
      • 2011-10-01
      • 1970-01-01
      • 1970-01-01
      • 2012-04-06
      • 1970-01-01
      • 2021-06-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多