我有一个Angular + spring REST和Wicket混合应用程序。 Wicket提供UserPage类。此UserPage包含我的javascript页面。
public class UserPage extends WebPage {
public UserPage() {
super();
}
@Override
public void renderHead(IHeaderResponse response) {
super.renderHead(response);
response.render(JavaScriptHeaderItem.forUrl("https://ajax.googleapis.com/ajax/libs/angularjs/1.0.5/angular.min.js"));
response.render(JavaScriptHeaderItem.forReference(new JavaScriptResourceReference(UserPage.class, "user.js")));
response.render(CssHeaderItem.forReference(new CssResourceReference(UserPage.class, "user.css")));
}
我已经实现了一个过滤器来检查会话是否处于活动状态,如果不是这种情况,页面应该重定向。
WicketSession s = WicketSession.get();
if (s == null) {
response.sendRedirect("/");
} else if (s.getUser() == null) {
response.sendRedirect("/");
} else {
filterChain.doFilter(request, response);
}
但是,当我在没有登录的情况下运行此页面时,浏览器会收到302,但不会重定向。只有当页面通过检票口提供时才会发生这种情况。如果我手动转到UserPage.html,它会重定向。
任何人都知道为什么会发生这种情况?肯定是wicket speficic,我还不熟悉wicket。
当尝试访问/ user时,页面停留,并且html正文作为响应数据发送,我的脚本尝试解析并失败(因此所有空的复选框)
有人知道为什么wicket在被发送302时不会重定向吗?关于可能修复的任何线索?
答案 0 :(得分:1)
1)如果你将会话数据保存在WicketSession中,那么它应该在web.xml中Spring的Filter / Servlet之前。
如果您使用它,我建议让用户使用Spring Security Authentication。
2)WicketSession.get()
永远不会返回null
。它充当“获取或创造”。您需要if (WicketSession.exists()) {...}
代替。