1 марта 2011 г. App Engine изменил поток входа в систему, сломав мое приложение (см.
Группы Google сообщение ). Эта проблема также возникла в этом стеке
Переполнение вопрос . Предлагаемые ответы
"чтобы приложение выполняло перенаправление. То есть createLoginUrl работает только тогда, когда
продолжить URL-адрес URL для приложения. Если вам нужно, чтобы пользователь был отправлен
другое приложение / хост после входа в систему, тогда ваше приложение должно сделать это перенаправление "
и
"установить обработчик перенаправления в вашем собственном приложении. Сделать это целью
параметра continue, и он отправит окончательный редирект на ваш
фактическая цель ".
Я задаю этот вопрос, чтобы получить подробную информацию о том, как сделать эту работу. Мое приложение состоит из двух приложений GAE, внешнего интерфейса GWT и внутреннего интерфейса, предоставляющего REST
API. Вот текущий поток.
Пользователь переходит на http://my -front.appspot.com / , и GWT делает
Вызов JSONP для http://my -back.appspot.com / пользователя сервлет.
Сервлет / User проверяет GAE
UserServiceFactory.getUserService (). GetCurrentUser (), чтобы увидеть, если это
ноль. Для пользователей, не вошедших в систему, это значение равно NULL, и сервлет возвращает
JSONP, что пользователь не вошел в систему.
GWT-код получает сообщение «не авторизован» и делает
String login = "http://my-back.appspot.com/Login";
Window.open(login, "_self", "");
Сервлет входа в систему:
public void doActualGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
UserService userService = UserServiceFactory.getUserService();
String url = "http://my-back.appspot.com/LoginRedirectServlet";
// String url ="http://my-front.appspot.com"; <--------- Before 1 March
log.info("Auth then redirect to: " + url);
String redirect = userService.createLoginURL(url);
resp.setStatus(301);
resp.setHeader("Location", redirect);
resp.setHeader("Connection", "close");
}
Мой новый LoginRedirectServlet имеет одну строку:
resp.sendRedirect("http://my-front.appspot.com/");
Обычно это приводит к циклу перенаправления, хотя иногда после нескольких нажатий на исходный URL-адрес это работает. Я подозреваю, что в коде около Window.open что-то не так, но я открыт для всех предложений.
Спасибо,
Гленн