У меня возникают проблемы с структурированием моего бэкэнда Java JEE для обработки сессий (сервлеты JEE обслуживаются с tomcat)
Мой интерфейс находится на другом сервере, на котором нет Java, только HTML и JavaScript. JavaScript использует ajax для отправки имени пользователя и пароля на внутренний сервер, который создаст сеанс:
session = request.getSession();
session.setAttribute("email", email);
session.setAttribute("auth", "1");
Когда внешний интерфейс снова связывается с внутренним интерфейсом через javascript после аутентификации, Java не может найти созданный сеанс. Вот как я ищу сеансы после того, как для auth установлено значение 1:
HttpSession session = request.getSession();
String auth = (String) session.getAttribute("auth");
if (auth == null || !auth.equals("1")) {
session.invalidate();// destroy any session that they may have
System.out.println("Invalid Session");
JsonGenerator gen = Json.createGenerator(response.getWriter());
gen.writeStartObject().write("status", "expired").writeNull("data")
.write("message", "Your session has expired").writeEnd();
gen.close();
return;
}
Все работает нормально, когда и передний и задний конец размещены на одном сервере с одним и тем же доменным именем. Но не тогда, когда интерфейс и сервер находятся на отдельных серверах с разными доменными именами. Как я должен структурировать это так, чтобы Java могла проверять, находится ли auth == 1, когда интерфейс связывается с ним?
Вот как я связываюсь с внутренним сервером с помощью Ajax:
post_url = 'http://backend.anotherserver.com/api/datapoint'
$.ajax({
url: post_url,
timeout: 10000,
method: 'POST',
dataType: 'json',
success: function (json) {
if (json.status == 'success' && json.data) {
// do something
}
})
Внешний и внутренний интерфейсы имеют разные доменные имена. После того, как я получу один рабочий интерфейс, я создам второй внешний интерфейс с другим доменным именем, а также третий, четвертый и т. Д. Все они будут использовать один и тот же внутренний интерфейс, и все внешние интерфейсы должны иметь возможность проходить проверку подлинности с помощью внутреннего интерфейса. , Я не хочу использовать oauth-сервер, это слишком много для меня, чтобы справиться прямо сейчас.