У меня есть приложение appengine с GWT-интерфейсом. Я использую сервис пользователя appengine для аутентификации в аккаунтах Google. Моя проблема заключается в том, что при выходе из интерфейса GWT пользователь не полностью вышел из системы. Пользователю показывается страница входа в систему, однако, когда вы снова нажимаете кнопку входа в систему с помощью Google, вы переходите прямо в приложение, не переходя на страницу входа в Google. Я не использую здесь какие-либо пользовательские поля для входа / прохода, строго appengine user service.
Я предполагаю, что это как-то связано с сеансами HTTP и базовой аутентификацией, однако я не смог полностью выйти из системы.
Вот служба входа / выхода на сервере:
import javax.servlet.http.HttpSession;
import com.google.gwt.user.server.rpc.RemoteServiceServlet;
@SuppressWarnings("serial")
public class LoginServiceImpl extends RemoteServiceServlet implements
LoginService {
public final static String CHANNEL_ID = "channel_id";
@Override
public UserAccountDTO getLoggedInUserDTO() {
UserAccountDTO userDTO;
HttpSession session = getThreadLocalRequest().getSession();
UserAccount u = LoginHelper.getLoggedInUser(session, null);
if (u == null)
return null;
userDTO = UserAccount.toDTO(u);
UserService userService = UserServiceFactory.getUserService();
userDTO.setLogoutURL(userService.createLogoutURL(requestUri));
return userDTO;
}
@Override
public void logout() throws NotLoggedInException {
getThreadLocalRequest().getSession().invalidate();
throw new NotLoggedInException("Logged out");
}
}
На стороне клиента GWT я использую этот код для выхода из системы:
Window.Location.assign(currentUserDTO.getLogoutURL());
Когда я нажимаю ссылку выхода из системы в моем приложении (которое запускает приведенный выше код), ничего не меняется. Однако, если я перезагружаю страницу, меня отправляют на страницу входа в мое приложение. Когда я нажимаю, чтобы войти с моей учетной записью Google, он сразу попадает в мое приложение, не запрашивая учетные данные Google. Это говорит мне о том, что пользователь вышел из моего приложения appengine, однако пользователь все равно каким-то образом вошел в свою учетную запись Google в браузере (я предполагаю, что токен аутентификации сохранен как cookie?) Мне нужно, чтобы мои пользователи полностью вышли из этой учетной записи Google, чтобы у следующего посетителя сайта запрашивались учетные данные Google.