Wicket忽略了来自Spring的302重定向

时间:2017-02-20 11:45:28

标签: javascript spring redirect wicket

我有一个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正文作为响应数据发送,我的脚本尝试解析并失败(因此所有空的复选框)

当手动转到UserPage.html时,它会重定向。 enter image description here

有人知道为什么wicket在被发送302时不会重定向吗?关于可能修复的任何线索?

1 个答案:

答案 0 :(得分:1)

1)如果你将会话数据保存在WicketSession中,那么它应该在web.xml中Spring的Filter / Servlet之前。

如果您使用它,我建议让用户使用Spring Security Authentication。

2)WicketSession.get()永远不会返回null。它充当“获取或创造”。您需要if (WicketSession.exists()) {...}代替。