Я использую Spring MVC, Spring Security для нашего веб-приложения.После успешного входа в систему запрос перенаправляется на страницу HTML (login.html).У нас есть около 4 AJAX-вызовов, которые выполняются после использования Ext-JS.
У меня есть требование отправлять данные JSON после успешного входа в систему.Это означает, что данные JSON должны быть переданы клиенту вместе со страницей входа.И на странице входа нам нужно получить доступ к этим данным JSON и отобразить их.Честно говоря, это те же данные, которые запрашивает код Ext-JS на странице login.html.Цель состоит в том, чтобы избежать дополнительных запросов при вызове AJAX.
Я опробовал различные примеры на stackoverflow и других веб-сайтах (просто избегая упоминания, чтобы избежать беспорядка) и создал пользовательский обработчик аутентификации и внес соответствующие изменения.Все работает нормально, но не способ отправить JSON / любые данные клиенту.
Ниже приведены конфигурации application-context.xml
<http auto-config="false" use-expressions="true">
<form-login login-page="/login"
login-processing-url="/static/j_spring_security_check"
authentication-failure-url="/login?login_error=t"
authentication-success-handler-ref="customAuthHandler"
authentication-failure-handler-ref="customAuthHandler"
default-target-url="/html/index.html"
always-use-default-target="true"/>
<beans:bean id="customAuthHandler"
class="com.mycompany.security.CustomAuthenticationHandler"/>
В методе onAuthenticationSuccess в CustomAuthenticationHandler у меня естьследующий код, чтобы увидеть, смогу ли я получить это значение, но не смог.Что я понимаю, так как это HTML / статический контент, я не могу передать значение сеанса клиенту, и это должно быть JSP.(Пожалуйста, исправьте меня, если не так!) Я не могу изменить HTML на JSP по бюрократическим причинам:
Тест 1:
request.getSession(true).setAttribute("ssntest", "hello:how:are:you");
Тест 2:
HttpServletResponseWrapper responseWrapper = new HttpServletResponseWrapper(response);
Writer out = responseWrapper.getWriter();
String targetUrl = "/login";
out.write("{success:true, targetUrl : \'" + targetUrl + "\'}");
out.close();
Какой способ передать значение JSON при успешной аутентификации вместе с HTML.