У меня есть Угловое + весеннее приложение REST и Wicket. Wicket обслуживает класс UserPage. Этот UserPage содержит мою страницу javascript.Калитка игнорирует перенаправление 302 с весны
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, он будет перенаправлен.
Кто-нибудь знает, почему это происходит? Это, безусловно, калитка, и я не так хорошо знаком с калитки.
При попытке достичь/пользователя, страница остается, и HTML тело отправить как данные ответа, которые мой скрипт пытается разобрать и терпит неудачу (следовательно, все пустые флажки)
Когда вручную собирается UserPage.html, он перенаправляет.
Кто-нибудь знает, почему калитка не перенаправляется, когда ее отправляют 302? Любые подсказки о возможном исправлении?
Как вы определили свой фильтрChain? Если фильтр wicketFilter находится за вашим собственным фильтром, Wicket не должен вмешиваться. –
Ах да фильтр калитки был фактически выполнен до пружинного фильтра. Теперь они перенаправлены, но это вызвало еще одну проблему. , когда я вызываю get() на WicketSession внутри фильтра пружины, он выдает org.apache.wicket.WicketRuntimeException: к текущему потоку приложения не прилагается. – user3761498
Вот что на самом деле заставил меня спросить об этом. Обычно вам нужно добавить WicketSessionFilter в свою цепочку, чтобы объекты Wicket (например, сеанс) были доступны для кода без калит. Тем не менее рекомендуется поместить фильтр калитки перед ним (если эта страница иногда может быть доставлена Wicket) ... Может быть, вы хотите посмотреть в Wicket Authentication и перенаправить на определенную страницу, когда ни один пользователь не войдет в сеанс? –