THIS IS A TEST INSTANCE. ALL YOUR CHANGES WILL BE LOST!!!!
...
Code Block |
---|
@Override protected IRequestCycleProcessor newRequestCycleProcessor() { return new WebRequestCycleProcessor() { @Override protected IRequestCodingStrategy newRequestCodingStrategy() { return new WebRequestCodingStrategy() { @Override protected void doPostEncode( PrependingStringBuffer prepender, final RequestCycle requestCycle, final IRequestTarget requestTarget) { if (requestTarget != null) { WebRequest webRequest = (WebRequest) requestCycle .getRequest(); HttpServletRequest httpServletRequest = webRequest .getHttpServletRequest(); Class targetClass = null; if (requestTarget instanceof IPageRequestTarget) { targetClass = ((IPageRequestTarget) requestTarget) .getPage().getClass(); } else if (requestTarget instanceof IBookmarkablePageRequestTarget) { targetClass = ((IBookmarkablePageRequestTarget) requestTarget) .getPageClass(); } else if (requestTarget instanceof ISharedResourceRequestTarget) { targetClass = ((ISharedResourceRequestTarget) requestTarget) .getClass(); } else if (requestTarget instanceof IListenerInterfaceRequestTarget) { targetClass = ((IListenerInterfaceRequestTarget) requestTarget) .getClass(); } if (targetClass != null && !httpServletRequest.isSecure() && targetClass .isAnnotationPresent(RequiredSSL.class)) { StringBuffer url = new StringBuffer("https://" + httpServletRequest.getServerName()); if (!"443".equals(MyApplication.this .getSslPort())) { url.append(":" + MyApplication.this.getSslPort()); } prepender.prepend(url.toString()); } else if (targetClass != null && httpServletRequest.isSecure() && !targetClass .isAnnotationPresent(RequiredSSL.class)) { StringBuffer url = new StringBuffer("http://" + httpServletRequest.getServerName()); prepender.prepend(url.toString()); } } } }; } }; |
Edit (Wicket 1.3.x) alternative:
An alternative implementation for 1.3 is to do as in the original solution but just override the newRequestCycleProcessor(...) in your application like this:
Code Block |
---|
@Override
protected IRequestCycleProcessor newRequestCycleProcessor() {
return new WebRequestCycleProcessor() {
public void respond(RequestCycle requestCycle) {
IRequestTarget requestTarget = requestCycle.getRequestTarget();
if (requestTarget != null) {
WebRequest webRequest = (WebRequest) requestCycle .getRequest();
WebResponse webResponse = (WebResponse) requestCycle .getResponse();
HttpServletRequest httpServletRequest = webRequest.getHttpServletRequest();
Class pageClass = null;
if (requestTarget instanceof IPageRequestTarget) {
IPageRequestTarget pageTarget = (IPageRequestTarget) requestTarget;
pageClass = pageTarget.getPage().getClass();
} else if (requestTarget instanceof IBookmarkablePageRequestTarget) {
IBookmarkablePageRequestTarget bookmarkableTarget = (IBookmarkablePageRequestTarget) requestTarget;
pageClass = bookmarkableTarget.getPageClass();
}
if (pageClass != null && !httpServletRequest.isSecure() &&
pageClass.isAnnotationPresent(RequiredSSL.class)) {
// We should switch to https
StringBuffer url = new StringBuffer("https://");
url.append(httpServletRequest.getServerName());
url.append(":" + MyApplication.get().getHttpsPort());
url.append(webRequest.getHttpServletRequest().getContextPath());
url.append(webRequest.getServletPath());
webResponse.redirect(url.toString());
} else if (pageClass != null && httpServletRequest.isSecure() &&
!pageClass.isAnnotationPresent(RequiredSSL.class)) {
// We should switch to http
StringBuffer url = new StringBuffer("http://");
url.append(httpServletRequest.getServerName());
url.append(":" + MyApplication.get().getHttpPort());
url.append(webRequest.getHttpServletRequest().getContextPath());
url.append(webRequest.getServletPath());
webResponse.redirect(url.toString());
} else {
// We should just respond!
requestTarget.respond(requestCycle);
}
}
}
};
}
|