Я хочу, чтобы при правильной регистрации пользователя идентификатор JSESSIONID менялся.
У меня есть свой собственный Hook для работы с autologin с библиотекой AutologinTokenClient (first_hook) и еще один Hook для проверки того, является ли пользователь администратором, перенаправьте его на панель администрирования (second_hook).
Моя конфигурация:
JBOSS: jboss-eap-6.4
Liferay Portal Enterprise Edition 6.2.10 EE GA1
Я попытался добавить тег в login.jsp, который я изменил в первом хуке (first_hook). Но это всегда один и тот же идентификатор.
<% @ page session = "false"%>
В first_hook у меня есть класс postlogin с некоторыми методами, я пытался поставить следующую функцию, но каждый раз, когда я выполняю ее, я выхожу из сеанса и мне приходится заново входить в систему.
private void renewSessionID (HttpServletRequest request)
{
LOG.info ("--------------------------------------------------------------------");
HttpSession oldSession = request.getSession (true);
LOG.info("OLD_SESSION: "+oldSession.getId ());
Enumeration attrNames = oldSession.getAttributeNames ();
Properties props = new Properties ();
if (attrNames != null)
{
while (attrNames.hasMoreElements ())
{
String key = (String) attrNames.nextElement ();
props.put (key, oldSession.getAttribute (key));
}
// Invalidating previous session
oldSession.invalidate ();
// Generate new session
HttpSession newSession = request.getSession (true);
attrNames = props.keys ();
while (attrNames.hasMoreElements ())
{
String key = (String) attrNames.nextElement ();
newSession.setAttribute (key, props.get (key));
}
LOG.info ("NEW_SESSION: "+newSession.getId ());
}
}
И ошибка следующая:
Caused by: java.lang.IllegalStateException: JBWEB000043: Can not create a session after the response has been committed
at org.apache.catalina.connector.Request.doGetSession (Request.java:2649)
at org.apache.catalina.connector.Request.getSession (Request.java:2382)
Я также пытался отдельно добавить следующие строки текста в файл portal-ext.properties, но это ничего не меняет:
session.enable.phishing.protection = true
session.phishing.protected.attributes = CAS_LOGIN, HTTPS_INITIAL, LAST_PATH, OPEN_ID_CONNECT_SESSION
Есть идеи?