Javalin sessionAttribute () не сохраняется между запросами - PullRequest
2 голосов
/ 15 марта 2019

Я настраиваю Javalin как микросервис, предоставляя конечные точки API для моего приложения React.Локально Javalin работает на порту 7070, а React работает на 3000 (через встроенный сервер с create-реагировать-приложение).

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

boolean isValid = User.isPasswordValid(u, password);
if (isValid) 
{
    ctx.sessionAttribute("currentUser", u.userHash);
}

В коде React он прослушивает ответ об успешном выполнении от этого контроллера и затем перенаправляет на страницу /dashboard.Страница /dashboard загружает данные, и я получаю данные, подходящие для пользователя, выводя этот userHash из сеанса следующим образом:

    String userHash = ctx.sessionAttribute("currentUser");

Однако, это всегда возвращает ноль.

Кажется, что это должно работать, и даже соответствует коду учебника, размещенному на веб-сайте Javalin https://javalin.io/tutorials/website-example

Это тот факт, что код React и Javalin, запущенные на разных серверах, приводят к тому, что это не работает?Я попытался заменить sessionAttribute() на cookieStore(), и у него возникла та же проблема с нулевым значением.

Правка - Добавление информации отклика с JSESSIONID enter image description here

1 Ответ

1 голос
/ 16 марта 2019

После обсуждения с создателем Javalin, правильный ответ - включить эту строку в создание сервера:

app.before(ctx -> ctx.header("Access-Control-Allow-Credentials", "true"));

и убедитесь, что ваш вызов JavaScript включает опцию:

credentials: "include",
...