Как включить безопасность Spring с помощью открытого идентификатора в проект GWT

Что ж, это просто, в основном я хочу следовать парадигме GWT «Одна страница» и все же интегрировать безопасность Spring в приложение. Насколько я понимаю, если файл cookie не найден в системе, spring перенаправит пользователя на страницу реферера Open id с запросом входа в систему, иначе он просто отправит моему серверу идентификатор открытого URL-адреса пользователя.

Вот что я использую в GWT:

        final FormPanel formPanel = new FormPanel();
        RootPanel.get("openId").add(formPanel);
        VerticalPanel openIdContainer = new VerticalPanel();
        formPanel.add(openIdContainer);

        TextBox url = new TextBox();
        url.setText("https://www.google.com/accounts/o8/id");
        url.setName("j_username");
        openIdContainer.add(url);

        formPanel.setAction("j_spring_openid_security_check");
        formPanel.setMethod(FormPanel.METHOD_POST);

        Button btn = new Button("Open ID");
        btn.addClickListener(new ClickListener() {
            public void onClick(Widget sender)
            {
                formPanel.submit();
            }
        });
        openIdContainer.add(btn);        

        formPanel.addFormHandler(new FormHandler() {
            public void onSubmit(FormSubmitEvent event)
            {
                System.out.println("On Submit invoked " +event.isCancelled());
            }
            public void onSubmitComplete(FormSubmitCompleteEvent event)
            {
                System.out.println("On Submit Complete invoked " + event.toString());
            }

        });

соответствующий вывод: При отправке вызывается false При завершении отправки вызывается null

Насколько я понимаю, полученный html нулевой. Как еще мне это сделать? GWT 1.5 не имеет простой формы (которая действительно обновляет страницу при отправке) и тега ввода с типом как submit. Придется ли мне жестко закодировать это в виджет HTML? Я попытался установить другой фрейм в качестве цели этой панели формы, но все равно не смог добиться каких-либо плодотворных результатов.


person Salvin Francis    schedule 03.03.2010    source источник


Ответы (1)


Насколько я могу судить, вы не устанавливаете правильный URL для загрузки:

formPanel.setAction(uploadServiceUrl);

/**
   * Sets the 'action' associated with this form. This is the URL to which it
   * will be submitted.
   * 
   * @param url the form's action
   */
  public void setAction(String url) {
    getFormElement().setAction(url);
  }
person Drejc    schedule 03.03.2010
comment
пожалуйста, поясните, вы имеете в виду, что j_spring_openid_security_check, поскольку действие моей формы неверно? это стандартное сообщение с целевым URL-адресом безопасности Spring. Я сомневаюсь, что это неправильно. - person Salvin Francis; 03.03.2010
comment
Я не знаком с Spring или OpenId, но сомневаюсь, что GWT отправляет это по правильному URL-адресу. Проверьте с помощью FireBug, куда идет ваш POST-запрос и что на самом деле отправляется. - person Drejc; 03.03.2010