我正在帮助一个在scala中运行的项目,并且历史上没有利用csrf对策。我对Scala和Play比较陌生。我已经阅读了有关开箱即用功能(https://www.playframework.com/documentation/2.4.x/ScalaCsrf)的文档,并且看起来考虑到项目的当前状态在全局范围内启用csrf检查是不现实的,并且每路径方法过于繁琐。
我的期望,来自其他语言和框架组合,类似于此处提出的内容(Play 2.5 disable csrf protection for some requests),并在此处进行了扩展(https://dominikdorn.com)。但这些仍然感觉相当原始。请注意,在完全版本的dominikdorn的方法(https://dominikdorn.com/2014/07/playframework-2-3-global-csrf-protection-disable-csrf-selectively/)中,我仍然需要围绕现有操作包装一个动作来注入csrf标记,这似乎是一种重复的工作。
我们使用的旋转模板通常在其中包含表单文字,而不是生成的表单。
理想的解决方案允许我以声明的方式指定,可能通过配置,哪些路由应该需要csrf检查,并动态注入隐藏的csrf输入字段,在旋转模板中引用的任何形式,使用控制器反向路由调用我有的路由声明要求csrf检查(action =“@ foo.bar.routes.routeName”)。
根据惯例,您能指导我这样的解决方案或更惯用但相似的努力方法。
干杯。