Недавно в процессе работы над порталом на базе Liferay столкнулись с проблемой отправки форм. Когда пользователь пытался отправить форму с вопросом, он получал сообщение о том, что срок действия его сессии истек:
Посмотрев в "инструменты разработчика", застали следующую картину:
Ее сопроводил ответ {"validCSRFToken":false}. Для решения этой проблемы одним из вариантов может быть отключение проверки CSRF конкретно для лайфреевских форм. Однако проблема в том, что в файле portal-ext.properties, где хранятся основные настройки портала, есть несколько свойств, отвечающих за игнорирование CSRF, например:
auth.token.ignore.origins
auth.token.ignore.actions
auth.token.ignore.portlets
За проверку CSRF в формах отвечает же действие (action):
com.liferay.dynamic.data.mapping.form.web.internal.portlet.action.ValidateCSRFTokenMVCResourceCommand
Несмотря на наличие свойства, отвечающего непосредственного за действия, оно нам не помогло. Пришлось добавлять действие напрямую в auth.token.ignore.origins, после чего все заработало. Таким образом, в portal-ext.properties было добавлено:
auth.token.ignore.origins=com.liferay.dynamic.data.mapping.form.web.internal.portlet.action.ValidateCSRFTokenMVCResourceCommand
После этого проблема с сессией больше не возникала. Подчеркнем однако, что данное свойство стоит добавлять, только если вы уверены, что это не приведет к проблемам с безопасностью вашего приложения.