我刚刚通过在 WicketApplication 中设置以下行作为文档指南,将 CSRF 启用到我们的 Wicket 9.1 应用程序中:
getRequestCycleListeners().add(new ResourceIsolationRequestCycleListener());
Run Code Online (Sandbox Code Playgroud)
保护本身似乎有效,但它破坏了我们的 UI 测试。通过 FormTester 提交表单时(请参阅下面的示例),我收到异常“请求被资源隔离策略阻止”。
WicketApplication app = new WicketApplication(someparams);
WicketTester tester = new WicketTester(app);
FormTester form = tester.newFormTester("form");
...
form.submit();
Run Code Online (Sandbox Code Playgroud)
我需要向 WicketTester 或 FormTester 添加一些配置吗?我在 Wicket 9.1 文档中没有看到任何与测试人员和 CSRF 相关的内容。
小智 5
您应该在提交或单击测试中的链接之前添加适当的请求标头,以便 CSRF 保护允许通过模拟请求:
tester.addRequestHeader(SEC_FETCH_SITE_HEADER, SAME_SITE);
form.submit();
Run Code Online (Sandbox Code Playgroud)
上面的片段中使用的两个常量是 FetchMetadataResourceIsolationPolicy 类中的静态字段。我将在用户指南中添加一段内容来提供此信息。
| 归档时间: |
|
| 查看次数: |
317 次 |
| 最近记录: |