摆脱插件的路由增强器中的破坏

时间:2019-04-27 15:41:31

标签: typo3 typo3-9.x

如何在基于pi_的扩展中摆脱cHash-Parameter?手册说:

“需求部分准确地指定了应将哪种参数作为正则表达式添加到该路由。通过这种方式,可以将其配置为仅允许整数值(例如分页)。如果需求过于宽松,则使用URL签名参数( “ cHash”)已添加到无法删除的URL的末尾。“

但是严格有多严格?我的配置:

Lexikon:
  type: Plugin
  limitToPages: [2140]
  routePath: '/eintrag/{eintrag}/{buchstabe}'
  namespace: 'tx_mcflexikon_pi1'
  requirements:
    buchstabe: '[A-Z]{1}'
    eintrag: '[0-9]{1,4}'
  default:
    buchstabe: 'A'
    eintrag: '0'

除以下这些以外,我无法定义更严格的规则:1个字母和1至4位数字。

谢谢!

1 个答案:

答案 0 :(得分:0)

好几个小时后,我找到了解决方法。似乎节要求中的定义对于cHash-Handling并不是很重要。更重要的是方面部分。如果我为每个参数定义一个方面,则cHash消失:

Lexikon:
  type: Plugin
  limitToPages: [2140]
  routePath: '/eintrag/{buchstabe}/{eintrag}'
  namespace: 'tx_mcflexikon_pi1'
  requirements:
    buchstabe: '[A-Z]{1}'
    eintrag: '[0-9]{1,4}'
  default:
    buchstabe: 'A'
    eintrag: '0'
  aspects:
    eintrag:
      type: PersistedAliasMapper
      tableName: 'tx_mcflexikon_daten'
      routeFieldName: 'slug'
    buchstabe:
      type: StaticValueMapper
      map:
        A: 'A'
        B: 'B'
        C: 'C'
        D: 'D'
        E: 'E'
        G: 'G'
        H: 'H'
        I: 'I'
        J: 'J'
        K: 'K'
        L: 'L'
        M: 'M'
        N: 'N'
        O: 'O'
        P: 'P'
        Q: 'Q'
        R: 'R'
        S: 'S'
        T: 'T'
        U: 'U'
        V: 'V'
        W: 'W'
        X: 'X'
        Y: 'Y'
        Z: 'Z'

定义每个字母有点烦人,但我发现没有其他可能性。 StaticRangeMapper和PersistedAliasMapper在这种情况下不起作用。

也许可以定义一个自定义的映射器,该映射器不执行任何操作以欺骗系统。另一方面:这显然会导致安全问题。