我有一个 Angular + spring REST 和 Wicket 混合应用程序。 Wicket 提供 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")));
}
我已经实现了一个过滤器来检查 session 是否处于事件状态,如果不是事件状态,则页面应该重定向。
WicketSession s = WicketSession.get();
if (s == null) {
response.sendRedirect("/");
} else if (s.getUser() == null) {
response.sendRedirect("/");
} else {
filterChain.doFilter(request, response);
}
但是,当我在未登录的情况下运行此页面时,浏览器会收到 302 但不会重定向。仅当通过 Wicket 口提供页面时才会发生这种情况。如果我手动转到 UserPage.html,它会重定向。
有谁知道为什么会发生这种情况吗?这肯定是特定于 Wicket 口的,而且我对 Wicket 口还不太熟悉。
当尝试访问/user 时,页面保持不变,并且 html 正文作为响应数据发送,我的脚本尝试解析该数据但失败(因此所有空复选框)
有谁知道为什么 wicket 在发送 302 时不重定向?有关可能修复的任何线索吗?
最佳答案
1) 如果您将 session 数据保存在 WicketSession 中,那么它应该位于 web.xml 中 Spring 的 Filter/Servlet 之前。
如果您使用Spring Security Authentication,我建议将用户保留在Spring Security Authentication 中。
2) WicketSession.get()
永远不会返回 null
。它的作用相当于“获取或创建”。您需要 if (WicketSession.exists()) {...}
。
关于javascript - Wicket 忽略来自 Spring 的 302 重定向,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42343725/