/** * Returns a target that can be used to redirect to the specified protocol. If no change is * required null will be returned. * * @param protocol * required protocol * @return request target or null */ public static IRequestTarget requireProtocol(Protocol protocol) { return requireProtocol(protocol, null); }
/** * Returns a target that can be used to redirect to the specified protocol. If no change is * required null will be returned. * * @param protocol * required protocol * @param target * request target to redirect to or {@code null} to redirect to current url * @return request target or null */ public static IRequestTarget requireProtocol(Protocol protocol, IRequestTarget target) { RequestCycle requestCycle = RequestCycle.get(); WebRequest webRequest = (WebRequest)requestCycle.getRequest(); HttpServletRequest request = webRequest.getHttpServletRequest(); if (protocol == null || protocol == Protocol.PRESERVE_CURRENT || request.getScheme().equals(protocol.toString().toLowerCase())) { return null; } else { return new SwitchProtocolRequestTarget(protocol, target); } } }
if (target == null) url = getUrl(protocol.toString().toLowerCase(), port, request);
protected IRequestTarget checkSecureIncoming(IRequestTarget target) { if (target != null && target instanceof SwitchProtocolRequestTarget) { return target; } if (portConfig == null) { return target; } Class<?> pageClass = getPageClass(target); if (pageClass != null) { IRequestTarget redirect = null; if (hasSecureAnnotation(pageClass)) { redirect = SwitchProtocolRequestTarget.requireProtocol(Protocol.HTTPS); } else { redirect = SwitchProtocolRequestTarget.requireProtocol(Protocol.HTTP); } if (redirect != null) { return redirect; } } return target; }
protected IRequestTarget checkSecureOutgoing(IRequestTarget target) { if (target != null && target instanceof SwitchProtocolRequestTarget) { return target; } if (portConfig == null) { return target; } Class<?> pageClass = getPageClass(target); if (pageClass != null) { IRequestTarget redirect = null; if (hasSecureAnnotation(pageClass)) { redirect = SwitchProtocolRequestTarget.requireProtocol(Protocol.HTTPS, target); } else { redirect = SwitchProtocolRequestTarget.requireProtocol(Protocol.HTTP, target); } if (redirect != null) { return redirect; } } return target; }