diff --git a/nuxeo-services/nuxeo-platform-web-common/src/main/java/org/nuxeo/ecm/platform/ui/web/auth/NuxeoAuthenticationFilter.java b/nuxeo-services/nuxeo-platform-web-common/src/main/java/org/nuxeo/ecm/platform/ui/web/auth/NuxeoAuthenticationFilter.java
index 0178890196e..70b91f39b63 100644
--- a/nuxeo-services/nuxeo-platform-web-common/src/main/java/org/nuxeo/ecm/platform/ui/web/auth/NuxeoAuthenticationFilter.java
+++ b/nuxeo-services/nuxeo-platform-web-common/src/main/java/org/nuxeo/ecm/platform/ui/web/auth/NuxeoAuthenticationFilter.java
@@ -746,6 +746,8 @@ public class NuxeoAuthenticationFilter implements Filter {
         } else {
             requestPage = getRequestedUrl(httpRequest);
         }
+        
+        requestPage = requestPage.replace(FORCE_ANONYMOUS_LOGIN, "disabledFAL");
 
         if (requestPage == null) {
             return false;
diff --git a/nuxeo-services/nuxeo-platform-web-common/src/main/java/org/nuxeo/ecm/platform/web/common/external/ExternalRequestFilter.java b/nuxeo-services/nuxeo-platform-web-common/src/main/java/org/nuxeo/ecm/platform/web/common/external/ExternalRequestFilter.java
index d524bddb980..af8fcc1cb0c 100644
--- a/nuxeo-services/nuxeo-platform-web-common/src/main/java/org/nuxeo/ecm/platform/web/common/external/ExternalRequestFilter.java
+++ b/nuxeo-services/nuxeo-platform-web-common/src/main/java/org/nuxeo/ecm/platform/web/common/external/ExternalRequestFilter.java
@@ -36,67 +36,76 @@ import javax.servlet.http.HttpSession;
 
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
+import org.nuxeo.ecm.platform.api.login.UserIdentificationInfo;
+import org.nuxeo.ecm.platform.ui.web.auth.CachableUserIdentificationInfo;
 import org.nuxeo.ecm.platform.ui.web.auth.NXAuthConstants;
 import org.nuxeo.ecm.platform.ui.web.auth.service.PluggableAuthenticationService;
+import org.nuxeo.ecm.platform.usermanager.UserManager;
 import org.nuxeo.runtime.api.Framework;
 
 /**
- * Filter that checks if the current request was called from an external tool (MS Office for instance)
+ * Filter that checks if the current request was called from an external tool
+ * (MS Office for instance)
  * <p/>
- * Then if a session was already opened in user browser, it automatically redirects to the requested URL
+ * Then if a session was already opened in user browser, it automatically
+ * redirects to the requested URL
  *
  * @author Thierry Martins
  * @since 5.6
  */
 public class ExternalRequestFilter implements Filter {
 
-    private static final Log log = LogFactory.getLog(ExternalRequestFilter.class);
-
-    @Override
-    public void init(FilterConfig filterConfig) throws ServletException {
-    }
-
-    @Override
-    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException,
-            ServletException {
-
-        HttpServletRequest httpRequest = (HttpServletRequest) request;
-
-        /*
-         * Check if login page was accessed after a redirection and if a Nuxeo session has been started
-         */
-        if (request != null && httpRequest.getParameter(NXAuthConstants.REQUESTED_URL) != null) {
-            HttpSession httpSession = httpRequest.getSession(false);
-            if (httpSession != null && httpSession.getAttribute(NXAuthConstants.USERIDENT_KEY) != null) {
-
-                log.debug("Detect redirection while an active session is running");
-
-                String requestedUrl = httpRequest.getParameter(REQUESTED_URL);
-                if (requestedUrl != null && !"".equals(requestedUrl)) {
-                    try {
-                        requestedUrl = URLDecoder.decode(requestedUrl, "UTF-8");
-                    } catch (UnsupportedEncodingException e) {
-                        log.error("Unable to get the requestedUrl parameter" + e);
-                    }
-                }
-
-                if (requestedUrl != null) {
-                    PluggableAuthenticationService service = (PluggableAuthenticationService) Framework.getRuntime().getComponent(
-                            PluggableAuthenticationService.NAME);
-                    String baseURL = service.getBaseURL(request);
-                    HttpServletResponse httpResponse = (HttpServletResponse) response;
-                    httpResponse.sendRedirect(baseURL + requestedUrl);
-                    return;
-                }
-            }
-        }
-
-        chain.doFilter(request, response);
-
-    }
-
-    @Override
-    public void destroy() {
-    }
+	private static final Log log = LogFactory.getLog(ExternalRequestFilter.class);
+
+	@Override
+	public void init(FilterConfig filterConfig) throws ServletException {
+	}
+
+	@Override
+	public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
+			throws IOException, ServletException {
+
+		HttpServletRequest httpRequest = (HttpServletRequest) request;
+
+		/*
+		 * Check if login page was accessed after a redirection and if a Nuxeo session
+		 * has been started
+		 */
+		if (request != null && httpRequest.getParameter(NXAuthConstants.REQUESTED_URL) != null) {
+			HttpSession httpSession = httpRequest.getSession(false);
+
+			if (httpSession != null) {
+				CachableUserIdentificationInfo userIdent = (CachableUserIdentificationInfo) httpSession
+						.getAttribute(NXAuthConstants.USERIDENT_KEY);
+				if (userIdent != null && !userIdent.getPrincipal().getName()
+						.equals(Framework.getService(UserManager.class).getAnonymousUserId())) {
+
+					log.debug("Detect redirection while an active session is running");
+
+					String requestedUrl = httpRequest.getParameter(REQUESTED_URL);
+					if (requestedUrl != null && !"".equals(requestedUrl)) {
+						try {
+							requestedUrl = URLDecoder.decode(requestedUrl, "UTF-8");
+						} catch (UnsupportedEncodingException e) {
+							log.error("Unable to get the requestedUrl parameter" + e);
+						}
+					}
+					if (requestedUrl != null) {
+						PluggableAuthenticationService service = (PluggableAuthenticationService) Framework.getRuntime()
+								.getComponent(PluggableAuthenticationService.NAME);
+						String baseURL = service.getBaseURL(request);
+						HttpServletResponse httpResponse = (HttpServletResponse) response;
+						httpResponse.sendRedirect(baseURL + requestedUrl);
+						return;
+					}
+				}
+			}
+		}
+		chain.doFilter(request, response);
+	}
+
+	@Override
+	public void destroy() {
+	}
 
 }
diff --git a/nuxeo-services/nuxeo-platform-web-common/src/main/resources/web/nuxeo.war/login.jsp b/nuxeo-services/nuxeo-platform-web-common/src/main/resources/web/nuxeo.war/login.jsp
index bf31be001a5..3cfff36ec4c 100644
--- a/nuxeo-services/nuxeo-platform-web-common/src/main/resources/web/nuxeo.war/login.jsp
+++ b/nuxeo-services/nuxeo-platform-web-common/src/main/resources/web/nuxeo.war/login.jsp
@@ -14,6 +14,8 @@
 <%@ page import="org.nuxeo.ecm.platform.ui.web.auth.service.LoginProviderLink"%>
 <%@ page import="org.nuxeo.ecm.platform.ui.web.auth.service.LoginScreenConfig"%>
 <%@ page import="org.nuxeo.ecm.platform.web.common.admin.AdminStatusHelper"%>
+<%@ page import="org.nuxeo.ecm.platform.usermanager.UserManager"%>
+<%@ page import="org.nuxeo.ecm.platform.ui.web.auth.CachableUserIdentificationInfo"%>
 <%@ page import="org.nuxeo.common.Environment"%>
 <%@ page import="org.nuxeo.runtime.api.Framework"%>
 <%@ page import="org.nuxeo.ecm.platform.ui.web.auth.service.LoginVideo" %>
@@ -31,7 +33,10 @@ String context = request.getContextPath();
 
 HttpSession httpSession = request.getSession(false);
 if (httpSession!=null && httpSession.getAttribute(NXAuthConstants.USERIDENT_KEY)!=null) {
-  response.sendRedirect(context + "/" + LoginScreenHelper.getStartupPagePath());
+  CachableUserIdentificationInfo userInfo = (CachableUserIdentificationInfo)httpSession.getAttribute(NXAuthConstants.USERIDENT_KEY);
+  if (!userInfo.getPrincipal().getName().equals(Framework.getService(UserManager.class).getAnonymousUserId())){
+  	response.sendRedirect(context + "/" + LoginScreenHelper.getStartupPagePath());
+  }
 }
 
 Locale locale = request.getLocale();
@@ -477,7 +482,7 @@ a.mobileAppLink:hover {
         <input type="hidden" name="language" id="language" value="<%= selectedLanguage %>" />
         <% } %>
         <input type="hidden" name="requestedUrl" id="requestedUrl" value="${fn:escapeXml(param.requestedUrl)}" />
-        <input type="hidden" name="forceAnonymousLogin" id="true" />
+        <input type="hidden" name="forceAnonymousLogin" value="true" />
         <input type="hidden" name="form_submitted_marker" id="form_submitted_marker" />
         <input class="login_button" type="submit" name="Submit"
           value="<fmt:message bundle="${messages}" key="label.login.logIn" />" />
