Author: jleroux
Date: Fri Nov 2 10:38:33 2018 New Revision: 1845568 URL: http://svn.apache.org/viewvc?rev=1845568&view=rev Log: "Applied fix from trunk for revision: 1845558 " ------------------------------------------------------------------------ r1845558 | jleroux | 2018-11-02 10:46:42 +0100 (ven. 02 nov. 2018) | 15 lignes Fixed: Correct behaviour of Autologin cookies (OFBIZ-10635) Renames "keep-autologin-cookie" to "use-autologin-cookie", and only create Autologin cookies when needed. No need to create Autologin cookies in applications that don't need it. Don't pass webAppName to LoginWorker::getSecuredUserLoginId, that can be handled with improved LoginWorker::getSecuredLoginIdCookieName Removes LoginWorker::autoLogoutCleanCookies, no longer needed since only those needed are created and kept (1 year at least after creation). For both autoLogin and securedLoginId cookies sets the path to the application. ------------------------------------------------------------------------ Modified: ofbiz/ofbiz-framework/branches/release17.12/ (props changed) ofbiz/ofbiz-framework/branches/release17.12/framework/base/dtd/ofbiz-component.xsd ofbiz/ofbiz-framework/branches/release17.12/framework/base/src/main/java/org/apache/ofbiz/base/component/ComponentConfig.java ofbiz/ofbiz-framework/branches/release17.12/framework/webapp/src/main/java/org/apache/ofbiz/webapp/control/LoginWorker.java Propchange: ofbiz/ofbiz-framework/branches/release17.12/ ------------------------------------------------------------------------------ --- svn:mergeinfo (original) +++ svn:mergeinfo Fri Nov 2 10:38:33 2018 @@ -10,4 +10,4 @@ /ofbiz/branches/json-integration-refactoring:1634077-1635900 /ofbiz/branches/multitenant20100310:921280-927264 /ofbiz/branches/release13.07:1547657 -/ofbiz/ofbiz-framework/trunk:1819499,1819598,1819800,1819805,1819811,1820038,1820262,1820374-1820375,1820441,1820457,1820644,1820658,1820790,1820823,1820949,1820966,1821012,1821036,1821112,1821115,1821144,1821186,1821219,1821226,1821230,1821386,1821613,1821628,1821965,1822125,1822310,1822377,1822383,1822393,1823467,1823562,1823876,1824314,1824316,1824732,1824803,1824847,1824855,1825192,1825211,1825216,1825233,1825450,1826374,1826502,1826592,1826671,1826674,1826805,1826938,1826997,1827439,1828255,1828316,1828346,1828424,1828512,1828514,1829690,1830936,1831074,1831078,1831234,1831608,1831831,1832577,1832662,1832756,1832800,1832944,1833173,1833211,1834181,1834191,1834736,1835235,1835887,1835891,1835953,1835964,1836144,1836871,1837857,1838032,1838256,1838381,1840189,1840199,1840828,1841657,1841662,1842372,1842921,1843225,1843893,1844943,1845418,1845420,1845466,1845544,1845552 +/ofbiz/ofbiz-framework/trunk:1819499,1819598,1819800,1819805,1819811,1820038,1820262,1820374-1820375,1820441,1820457,1820644,1820658,1820790,1820823,1820949,1820966,1821012,1821036,1821112,1821115,1821144,1821186,1821219,1821226,1821230,1821386,1821613,1821628,1821965,1822125,1822310,1822377,1822383,1822393,1823467,1823562,1823876,1824314,1824316,1824732,1824803,1824847,1824855,1825192,1825211,1825216,1825233,1825450,1826374,1826502,1826592,1826671,1826674,1826805,1826938,1826997,1827439,1828255,1828316,1828346,1828424,1828512,1828514,1829690,1830936,1831074,1831078,1831234,1831608,1831831,1832577,1832662,1832756,1832800,1832944,1833173,1833211,1834181,1834191,1834736,1835235,1835887,1835891,1835953,1835964,1836144,1836871,1837857,1838032,1838256,1838381,1840189,1840199,1840828,1841657,1841662,1842372,1842921,1843225,1843893,1844943,1845418,1845420,1845466,1845544,1845552,1845558 Modified: ofbiz/ofbiz-framework/branches/release17.12/framework/base/dtd/ofbiz-component.xsd URL: http://svn.apache.org/viewvc/ofbiz/ofbiz-framework/branches/release17.12/framework/base/dtd/ofbiz-component.xsd?rev=1845568&r1=1845567&r2=1845568&view=diff ============================================================================== --- ofbiz/ofbiz-framework/branches/release17.12/framework/base/dtd/ofbiz-component.xsd (original) +++ ofbiz/ofbiz-framework/branches/release17.12/framework/base/dtd/ofbiz-component.xsd Fri Nov 2 10:38:33 2018 @@ -251,7 +251,7 @@ under the License. </xs:restriction> </xs:simpleType> </xs:attribute> - <xs:attribute name="keep-autologin-cookie" default="false"> + <xs:attribute name="use-autologin-cookie" default="false"> <xs:simpleType> <xs:annotation> <xs:documentation> Modified: ofbiz/ofbiz-framework/branches/release17.12/framework/base/src/main/java/org/apache/ofbiz/base/component/ComponentConfig.java URL: http://svn.apache.org/viewvc/ofbiz/ofbiz-framework/branches/release17.12/framework/base/src/main/java/org/apache/ofbiz/base/component/ComponentConfig.java?rev=1845568&r1=1845567&r2=1845568&view=diff ============================================================================== --- ofbiz/ofbiz-framework/branches/release17.12/framework/base/src/main/java/org/apache/ofbiz/base/component/ComponentConfig.java (original) +++ ofbiz/ofbiz-framework/branches/release17.12/framework/base/src/main/java/org/apache/ofbiz/base/component/ComponentConfig.java Fri Nov 2 10:38:33 2018 @@ -829,7 +829,7 @@ public final class ComponentConfig { // CatalinaContainer modifies this field. private volatile boolean appBarDisplay; private final String accessPermission; - private final boolean keepAutologinCookie; + private final boolean useAutologinCookie; private WebappInfo(ComponentConfig componentConfig, Element element) { this.componentConfig = componentConfig; @@ -869,7 +869,7 @@ public final class ComponentConfig { this.appBarDisplay = !"false".equals(element.getAttribute("app-bar-display")); this.privileged = !"false".equals(element.getAttribute("privileged")); this.accessPermission = element.getAttribute("access-permission"); - this.keepAutologinCookie = !"false".equals(element.getAttribute("keep-autologin-cookie")); + this.useAutologinCookie = !"false".equals(element.getAttribute("use-autologin-cookie")); String basePermStr = element.getAttribute("base-permission"); if (!basePermStr.isEmpty()) { this.basePermission = basePermStr.split(","); @@ -959,8 +959,8 @@ public final class ComponentConfig { return virtualHosts; } - public boolean getKeepAutologinCookie() { - return keepAutologinCookie; + public boolean isAutologinCookieUsed() { + return useAutologinCookie; } public synchronized void setAppBarDisplay(boolean appBarDisplay) { Modified: ofbiz/ofbiz-framework/branches/release17.12/framework/webapp/src/main/java/org/apache/ofbiz/webapp/control/LoginWorker.java URL: http://svn.apache.org/viewvc/ofbiz/ofbiz-framework/branches/release17.12/framework/webapp/src/main/java/org/apache/ofbiz/webapp/control/LoginWorker.java?rev=1845568&r1=1845567&r2=1845568&view=diff ============================================================================== --- ofbiz/ofbiz-framework/branches/release17.12/framework/webapp/src/main/java/org/apache/ofbiz/webapp/control/LoginWorker.java (original) +++ ofbiz/ofbiz-framework/branches/release17.12/framework/webapp/src/main/java/org/apache/ofbiz/webapp/control/LoginWorker.java Fri Nov 2 10:38:33 2018 @@ -520,9 +520,7 @@ public class LoginWorker { } catch (GenericServiceException e) { Debug.logError(e, "Error setting user preference", module); } - // start with a clean state, in case the user has quit the session w/o login out - autoLogoutCleanCookies(userLogin, request, response); - + // finally do the main login routine to set everything else up in the session, etc return doMainLogin(request, response, userLogin, userLoginSession); } else { @@ -579,6 +577,7 @@ public class LoginWorker { RequestHandler rh = RequestHandler.getRequestHandler(request.getSession().getServletContext()); rh.runAfterLoginEvents(request, response); + // make sure the autoUserLogin is set to the same and that the client cookie has the correct userLoginId return autoLoginSet(request, response); } @@ -636,7 +635,6 @@ public class LoginWorker { doBasicLogout(userLogin, request, response); - autoLogoutCleanCookies(userLogin, request, response); if (request.getAttribute("_AUTO_LOGIN_LOGOUT_") == null) { return autoLoginCheck(request, response); } @@ -704,16 +702,18 @@ public class LoginWorker { // DON'T save the cart, causes too many problems: if (shoppingCart != null) session.setAttribute("shoppingCart", new WebShoppingCart(shoppingCart, session)); } + // Set an autologin cookie for the webapp if it requests it public static String autoLoginSet(HttpServletRequest request, HttpServletResponse response) { Delegator delegator = (Delegator) request.getAttribute("delegator"); HttpSession session = request.getSession(); GenericValue userLogin = (GenericValue) session.getAttribute("userLogin"); - String domain = EntityUtilProperties.getPropertyValue("url", "cookie.domain", delegator); - if (userLogin != null) { + WebappInfo webappInfo = ComponentConfig.getWebappInfo("default-server", UtilHttp.getApplicationName(request)); + + if (userLogin != null && webappInfo != null && webappInfo.isAutologinCookieUsed()) { Cookie autoLoginCookie = new Cookie(getAutoLoginCookieName(request), userLogin.getString("userLoginId")); autoLoginCookie.setMaxAge(60 * 60 * 24 * 365); - autoLoginCookie.setDomain(domain); - autoLoginCookie.setPath("/"); + autoLoginCookie.setDomain(EntityUtilProperties.getPropertyValue("url", "cookie.domain", delegator)); + autoLoginCookie.setPath("/" + UtilHttp.getApplicationName(request)); autoLoginCookie.setSecure(true); autoLoginCookie.setHttpOnly(true); response.addCookie(autoLoginCookie); @@ -727,14 +727,6 @@ public class LoginWorker { return UtilHttp.getApplicationName(request) + ".autoUserLoginId"; } - protected static String getAutoLoginCookieName(String webappName) { - return webappName + ".autoUserLoginId"; - } - - /** - * @deprecated Moved to {@link org.apache.ofbiz.webapp.control.LoginWorker#getAutoUserLoginId(HttpServletRequest request, String webappName) String} - */ - @Deprecated public static String getAutoUserLoginId(HttpServletRequest request) { String autoUserLoginId = null; Cookie[] cookies = request.getCookies(); @@ -752,30 +744,12 @@ public class LoginWorker { return autoUserLoginId; } - public static String getAutoUserLoginId(HttpServletRequest request, String webappName) { - String autoUserLoginId = null; - Cookie[] cookies = request.getCookies(); - if (Debug.verboseOn()) { - Debug.logVerbose("Cookies: " + Arrays.toString(cookies), module); - } - if (cookies != null) { - for (Cookie cookie: cookies) { - String cookieName = (webappName != null) ? getAutoLoginCookieName(webappName) : getAutoLoginCookieName(request); - if (cookie.getName().equals(cookieName)) { - autoUserLoginId = cookie.getValue(); - break; - } - } - } - return autoUserLoginId; - } - public static String autoLoginCheck(HttpServletRequest request, HttpServletResponse response) { Delegator delegator = (Delegator) request.getAttribute("delegator"); HttpSession session = request.getSession(); - return autoLoginCheck(delegator, session, getAutoUserLoginId(request, null)); + return autoLoginCheck(delegator, session, getAutoUserLoginId(request)); } private static String autoLoginCheck(Delegator delegator, HttpSession session, String autoUserLoginId) { @@ -830,34 +804,6 @@ public class LoginWorker { return "success"; } - // Removes all the autoLoginCookies but if the webapp requires keeping it - public static String autoLogoutCleanCookies(GenericValue userLogin, HttpServletRequest request, HttpServletResponse response) { - HttpSession session = request.getSession(); - - Cookie[] cookies = request.getCookies(); - if (Debug.verboseOn()) { - Debug.logVerbose("Cookies: " + Arrays.toString(cookies), module); - } - if (cookies != null && userLogin != null) { - for (Cookie autoLoginCookie: cookies) { - String autoLoginName = autoLoginCookie.getName().replace(".autoUserLoginId", ""); - WebappInfo webappInfo = ComponentConfig.getWebappInfo("default-server", autoLoginName); - if (webappInfo != null && !webappInfo.getKeepAutologinCookie()) { - autoLoginCookie.setMaxAge(0); - autoLoginCookie.setPath("/"); - response.addCookie(autoLoginCookie); - } - } - } - - // remove the session attributes - session.removeAttribute("autoUserLogin"); - session.removeAttribute("autoName"); - - request.setAttribute("_AUTO_LOGIN_LOGOUT_", Boolean.TRUE); - return "success"; - } - public static boolean isUserLoggedIn(HttpServletRequest request) { HttpSession session = request.getSession(); GenericValue currentUserLogin = (GenericValue) session.getAttribute("userLogin"); |
Free forum by Nabble | Edit this page |