diff --git a/smp-webapp/src/main/java/eu/europa/ec/edelivery/smp/auth/SMPAuthenticationEventListener.java b/smp-webapp/src/main/java/eu/europa/ec/edelivery/smp/auth/SMPAuthenticationEventListener.java index 017097f5c8cb68bb71574e2a73f94e908846cb8e..69b04736a2ca6ff639461063b143b206bbd79325 100644 --- a/smp-webapp/src/main/java/eu/europa/ec/edelivery/smp/auth/SMPAuthenticationEventListener.java +++ b/smp-webapp/src/main/java/eu/europa/ec/edelivery/smp/auth/SMPAuthenticationEventListener.java @@ -45,10 +45,23 @@ public class SMPAuthenticationEventListener implements ApplicationListener<Authe public void onApplicationEvent (AuthenticationSuccessEvent event) { Collection<? extends GrantedAuthority> authorities = event.getAuthentication().getAuthorities(); boolean hasAdminRole = authorities.stream().anyMatch(grantedAuthority -> StringUtils.equalsIgnoreCase(grantedAuthority.getAuthority(), SMPAuthority.S_AUTHORITY_SYSTEM_ADMIN.getAuthority())); - ServletRequestAttributes attr = (ServletRequestAttributes) RequestContextHolder.currentRequestAttributes(); - HttpSession session = attr.getRequest().getSession(); - int idleTimeout =(hasAdminRole ? configurationService.getSessionIdleTimeoutForAdmin():configurationService.getSessionIdleTimeoutForUser()); - LOG.debug("Set session idle timeout [{}] for user [{}]", idleTimeout,event.getAuthentication().getName()); - session.setMaxInactiveInterval(idleTimeout); + ServletRequestAttributes attr = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes(); + if (attr!= null) { + HttpSession session = attr.getRequest().getSession(); + int idleTimeout = (hasAdminRole ? configurationService.getSessionIdleTimeoutForAdmin() : configurationService.getSessionIdleTimeoutForUser()); + LOG.debug("Set session idle timeout [{}] for user [{}]", idleTimeout, event.getAuthentication().getName()); + session.setMaxInactiveInterval(idleTimeout); + } else { + LOG.warn("Could not get ServletRequestAttributes attributes for authentication [{}]", event.getAuthentication() ); + } + /*try { + + HttpSession session = attr.getRequest().getSession(); + int idleTimeout = (hasAdminRole ? configurationService.getSessionIdleTimeoutForAdmin() : configurationService.getSessionIdleTimeoutForUser()); + LOG.debug("Set session idle timeout [{}] for user [{}]", idleTimeout, event.getAuthentication().getName()); + session.setMaxInactiveInterval(idleTimeout); + } catch (RuntimeException ex) { + LOG.error("Session error: " , ex); + }*/ } } \ No newline at end of file diff --git a/smp-webapp/src/main/webapp/WEB-INF/web.xml b/smp-webapp/src/main/webapp/WEB-INF/web.xml index c79b6f718580a9d977167e1bd6411f22d496152c..d6de0998890ee38573851bdc2e4b063c190f3e83 100644 --- a/smp-webapp/src/main/webapp/WEB-INF/web.xml +++ b/smp-webapp/src/main/webapp/WEB-INF/web.xml @@ -102,6 +102,10 @@ --> <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> + + </listener> + <listener> + <listener-class>org.springframework.web.context.request.RequestContextListener</listener-class> </listener> </web-app>