2012-04-11 1 views
0

Я пытаюсь настроить аутентификацию oauth для веб-приложения. В этом случае я хочу показать список поставщиков oauth на странице приложения ... Теперь, когда пользователь нажимает на одну из кнопок провайдера, открывается новое окно, которое выводит пользователя непосредственно на веб-сайт этого провайдера, где пользователь пытается аутентифицировать ,gwt beginner- как открыть url в другом окне и управлять потоком в этом окне

После успешной аутентификации поток должен вернуться на главную страницу моего приложения, где содержимое изменено (по мере успешного входа в систему).

Как создать новое окно и настроить его на сторонний URL-адрес? И могу ли я получить желаемые символы из этого окна после успешного входа в систему и закрыть дополнительное окно? Могу ли я получить учетные данные из внешнего окна таким образом?

Любые указатели/учебники были бы большой помощью .... Я видел некоторые реализации с вышеуказанным потоком, но хочу знать, как такая реализация может быть выполнена с помощью GWT.

ответ

0

Трэвис ответил, как открыть окно. Вам нужно открыть новые окна всплывающих окон с аутентификацией от третьих лиц. Я бы рекомендовал также использовать dyuproject, чтобы помочь с общим потоком, если вы используете открытый идентификатор. Когда выполняется подтверждение связи на стороне сервера, вам нужно будет отправить сообщение обратно клиенту, который всплывающее окно контролирует HTTP-запрос/ответ. Поэтому вам нужно будет перезвонить из всплывающего окна в ваше клиентское приложение с информацией об успехе или сбое. Я сделал это, сначала зарегистрировав место для перезвона на клиенте с помощью jsni. Где-то в вашем коде аутентификации, вероятно, рядом с кодом, который запускает всплывающее окно браузера, у меня есть код, который выглядит, как этот

private native void exposeAuthorizedHandler(OpenIdPanelPresenter pres) /*-{ 
    $wnd.handleOpenIDResponse = function() { 
     [email protected]::Authorized()(); 
    }; 
}-*/; 

private native void exposeFailedHandler(OpenIdPanelPresenter pres) /*-{ 
$wnd.handleOpenIDFailed = function() { 
    [email protected]::Failed()(); 
}; 
}-*/; 

Затем в окне браузера я имею код на стороне сервера переадресацию на один из двух страниц JSP, идентифицированный один выглядит следующим образом

<%@ page contentType="text/html;charset=UTF-8" language="java" %> 
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 
<html> 
<body onload="window.opener.handleOpenIDResponse();window.close();"> 

    <h1>You have been authenticated.</h1> 

</body> 
</html> 

Неудавшийся один выглядит следующим образом

<%@ page contentType="text/html;charset=UTF-8" language="java" %> 
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 
<html> 
<body> 

    <h1>Authentication failed.</h1> 
    </br> 
    <div style="color:red;font-size:1.4em">${openid_fail_message}</div> 

    <button onclick="window.opener.handleOpenIDFailed();window.close();">Close</button> 
</body> 
</html> 
Смежные вопросы