我正在使用Java Play Framework 2.3.5并希望添加全局CSRF保护,如下所述:https://www.playframework.com/documentation/2.3.x/JavaCsrf
如果我复制并粘贴以下代码:
import play.GlobalSettings;
import play.api.mvc.EssentialFilter;
import play.filters.csrf.CSRFFilter;
public class Global extends GlobalSettings {
@Override
public <T extends EssentialFilter> Class<T>[] filters() {
return new Class[]{CSRFFilter.class};
}
}
csrfToken值将与普通的cookie值连接,而不是像我预期的那样创建一个新的cookie。
PLAY_SESSION="b8c5eead5e95be30edaccec5680aa58fb1b5cae5-csrfToken=4dfb0c575ac272f9b9e457e40a287c81972baec5-1414171392926-af3ee2c36fdbdbf65c68dcc4"; path=/; domain=localhost; HttpOnly
我不知道以任何方式搞乱Play会话管理。我错过了一些明显的东西吗?
答案 0 :(得分:3)
来自文档:
可以在
application.conf
中配置以下选项:
csrf.cookie.name
- 如果已配置,Play会将CSRF令牌存储在具有给定名称的cookie中,而不是存储在会话中。