如何在Play Framework 2(Java)中有选择地禁用CSRF检查

在Play Framework中,我们可以应用全局CSRF检查

@SuppressWarnings({ "rawtypes", "unchecked" }) @Override public  Class[] filters() { Class[] filters = { CSRFFilter.class }; return filters; } 

在大多数情况下都没问题。 但我想设置指向我们网站的Facebook Canvas页面。 事情是Facebook发送POST请求到我们的网站,它被CSRF检查阻止。 它总是返回“无效的CSRF令牌”

因此,我想在某些操作中有选择地禁用CSRF检查,例如www.ourwebsite.com/canvas

这可行吗?

我创建了一篇关于如何执行此操作的博客文章,请参阅此处:

http://dominikdorn.com/2014/07/playframework-2-3-global-csrf-protection-disable-csrf-selectively/

2017年更新:从PlayFramework 2.6开始,现在包含在框架内: https ://www.playframework.com/documentation/2.6.x/JavaCsrf#applying-a-global-csrf-filter