diff --git a/vospace-ui-backend/src/main/java/it/inaf/ia2/vospace/ui/PreLoginFilter.java b/vospace-ui-backend/src/main/java/it/inaf/ia2/vospace/ui/PreLoginFilter.java
new file mode 100644
index 0000000000000000000000000000000000000000..182cd6401b611ef1e39c156030cddd4692580a06
--- /dev/null
+++ b/vospace-ui-backend/src/main/java/it/inaf/ia2/vospace/ui/PreLoginFilter.java
@@ -0,0 +1,26 @@
+package it.inaf.ia2.vospace.ui;
+
+import java.io.IOException;
+import javax.servlet.Filter;
+import javax.servlet.FilterChain;
+import javax.servlet.ServletException;
+import javax.servlet.ServletRequest;
+import javax.servlet.ServletResponse;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpSession;
+
+/**
+ * Destroys the current session before a new login.
+ */
+public class PreLoginFilter implements Filter {
+
+    @Override
+    public void doFilter(ServletRequest req, ServletResponse res, FilterChain fc) throws IOException, ServletException {
+        HttpServletRequest request = (HttpServletRequest) req;
+        HttpSession session = request.getSession();
+        if (session != null && request.getParameter("code") == null) {
+            session.invalidate();
+        }
+        fc.doFilter(req, res);
+    }
+}
diff --git a/vospace-ui-backend/src/main/java/it/inaf/ia2/vospace/ui/VOSpaceUiApplication.java b/vospace-ui-backend/src/main/java/it/inaf/ia2/vospace/ui/VOSpaceUiApplication.java
index 8e4be4728e12cdb33462bf20523cb8016fbb3c40..461d692d26413248c20dae50b1da7cdbdf41dde8 100644
--- a/vospace-ui-backend/src/main/java/it/inaf/ia2/vospace/ui/VOSpaceUiApplication.java
+++ b/vospace-ui-backend/src/main/java/it/inaf/ia2/vospace/ui/VOSpaceUiApplication.java
@@ -8,6 +8,7 @@ import org.springframework.boot.SpringApplication;
 import org.springframework.boot.autoconfigure.SpringBootApplication;
 import org.springframework.boot.web.servlet.FilterRegistrationBean;
 import org.springframework.context.annotation.Bean;
+import org.springframework.core.Ordered;
 
 @SpringBootApplication
 public class VOSpaceUiApplication {
@@ -16,6 +17,15 @@ public class VOSpaceUiApplication {
         SpringApplication.run(VOSpaceUiApplication.class, args);
     }
 
+    @Bean
+    public FilterRegistrationBean preLoginFilterRegistration() {
+        FilterRegistrationBean bean = new FilterRegistrationBean();
+        bean.setFilter(new PreLoginFilter());
+        bean.addUrlPatterns("/login");
+        bean.setOrder(Ordered.HIGHEST_PRECEDENCE);
+        return bean;
+    }
+
     @Bean
     public FilterRegistrationBean loginFilterRegistration() {
         FilterRegistrationBean registration = new FilterRegistrationBean();
diff --git a/vospace-ui-backend/src/main/java/it/inaf/ia2/vospace/ui/VOSpaceException.java b/vospace-ui-backend/src/main/java/it/inaf/ia2/vospace/ui/exception/VOSpaceException.java
similarity index 100%
rename from vospace-ui-backend/src/main/java/it/inaf/ia2/vospace/ui/VOSpaceException.java
rename to vospace-ui-backend/src/main/java/it/inaf/ia2/vospace/ui/exception/VOSpaceException.java