Передача данных JSON в HTML после успешной аутентификации - безопасность Spring и Spring MVC - PullRequest
2 голосов
/ 15 марта 2012

Я использую 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.

1 Ответ

0 голосов
/ 16 марта 2012

Хранение данных такого рода в сеансе не очень хороший подход, но вы можете попробовать аннотацию @SessionAttributes, предоставленную SpringMVC.См. Другой ответ

. Смысл заключается в том, чтобы сохранить значение JSON в сеансе на странице входа в систему, а затем вернуть его в другом запросе AJAX после успешной аутентификации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...