You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Optimizely CMS11 Content Delivery API权限限制与过滤问题问询

针对Episerver CMS 11 Content Delivery/Search API的问题解答

问题1:限制访问的配置方式

当SetMinimumRoles为空时,API默认允许匿名访问。若要限制访问,有两种核心控制方式,可单独使用或结合:

  • 基于角色的访问控制:无需依赖令牌,直接将SetMinimumRoles设置为指定角色(比如SetMinimumRoles("Editors", "ContentAdmins")),只有拥有对应角色的CMS认证用户才能访问API。
  • 基于令牌的验证:如果要采用令牌访问机制,需在Startup中完成API密钥验证配置:
    1. 注册ApiKey验证服务:
      services.AddAuthentication(options =>
      {
          options.DefaultAuthenticateScheme = ApiKeyAuthenticationDefaults.AuthenticationScheme;
          options.DefaultChallengeScheme = ApiKeyAuthenticationDefaults.AuthenticationScheme;
      })
      .AddApiKey(options =>
      {
          options.Realm = "Episerver API";
          options.KeyName = "X-Api-Key";
      });
      
    2. 启用验证中间件:
      app.UseAuthentication();
      
    配置完成后,即使SetMinimumRoles为空,匿名用户必须携带有效API密钥(通过X-Api-Key请求头传递)才能访问。若同时设置SetMinimumRoles,则需同时满足角色权限和令牌验证双重要求。

问题2:过滤器的正确使用格式

Episerver CMS 11的Content Search API过滤器基于Lucene查询语法,需通过filter查询参数传递,以下是常见有效格式示例:

  • 按内容类型过滤:匹配内容类型的类名(注意大小写需与代码定义一致)
    ?filter=contentType:ArticlePage
    
  • 按内容ID过滤:
    ?filter=id:12345
    
  • 按父节点ID过滤:
    ?filter=parent:67890
    
  • 范围过滤(如发布日期):使用[起始值 TO 结束值]格式,*代表通配符
    ?filter=publishDate:[2023-01-01 TO *]
    
  • 多条件逻辑组合:用AND/OR/NOT组合条件,需用括号明确优先级
    ?filter=(contentType:ArticlePage AND publishDate:[2023-01-01 TO *] NOT parent:67890)
    
  • 按语言过滤:指定目标语言代码
    ?filter=language:en
    

注意事项:

  • 确保目标内容已被正确索引(可通过CMS后台的搜索管理工具检查索引状态)
  • 字段名需与索引中实际存储的字段完全匹配(可通过索引浏览器查看完整字段列表)
  • 若过滤器包含特殊字符(如空格、括号),需进行URL编码后再传递

内容的提问来源于stack exchange,提问作者Farhin Shaikh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.10 00:00:15