Author: jleroux Date: Tue Jan 8 11:05:21 2013 New Revision: 1430208 URL: http://svn.apache.org/viewvc?rev=1430208&view=rev Log: "Applied fix from trunk for revision: 1068283" ------------------------------------------------------------------------ r1068283 | jleroux | 2011-02-08 08:47:25 +0100 (mar., 08 févr. 2011) | 8 lines
Fix "Ajax requests prevent externalLoginKey parameters from working correctly" (https://issues.apache.org/jira/browse/OFBIZ-3862) - OFBIZ-3862 Scott reported: To clarify, the problem only occurs if the Ajax call results in a screen being rendered since it is the ScreenRenderer that causes a new key to be generated. Bilgin suggested: I think a solution would be to skip generating of new external login key for Ajax requests. Ajax requests can be identified by presence of 'X-Requested-With': 'XMLHttpRequest', http header. It is set by most of the Javascript libraries we use: prototype, jquery. I coded it ------------------------------------------------------------------------ Modified: ofbiz/branches/release10.04/ (props changed) ofbiz/branches/release10.04/framework/webapp/src/org/ofbiz/webapp/control/LoginWorker.java Propchange: ofbiz/branches/release10.04/ ------------------------------------------------------------------------------ Merged /ofbiz/trunk:r1068283 Modified: ofbiz/branches/release10.04/framework/webapp/src/org/ofbiz/webapp/control/LoginWorker.java URL: http://svn.apache.org/viewvc/ofbiz/branches/release10.04/framework/webapp/src/org/ofbiz/webapp/control/LoginWorker.java?rev=1430208&r1=1430207&r2=1430208&view=diff ============================================================================== --- ofbiz/branches/release10.04/framework/webapp/src/org/ofbiz/webapp/control/LoginWorker.java (original) +++ ofbiz/branches/release10.04/framework/webapp/src/org/ofbiz/webapp/control/LoginWorker.java Tue Jan 8 11:05:21 2013 @@ -129,7 +129,10 @@ public class LoginWorker { synchronized (session) { // if the session has a previous key in place, remove it from the master list String sesExtKey = (String) session.getAttribute(EXTERNAL_LOGIN_KEY_ATTR); + if (sesExtKey != null) { + if (isAjax(request)) return sesExtKey; + externalLoginKeys.remove(sesExtKey); } @@ -1023,4 +1026,9 @@ public class LoginWorker { } return userLoginSessionMap; } + + public static boolean isAjax(HttpServletRequest request) { + return "XMLHttpRequest".equals(request.getHeader("X-Requested-With")); + } + }

