Невозможно аутентифицировать пользователя, используя @ hapi / cook ie 19.xx - PullRequest
0 голосов
/ 21 апреля 2020

Я недавно обновил свой проект для использования hapi 19.xx, а также обновил проект для использования @ hapi / cook ie, в отличие от устаревшего hap-auth-cook ie, однако после успешной аутентификации мое приложение постоянно пытается пройти повторную аутентификацию даже после установки сеанса cook ie с помощью request.cookieAuth.set({ id : id})

Когда приложение перенаправляется на «страницу с ограничениями» с использованием свойства redirectTo: объекта .auth.strategy('admin', 'cookie', {}).

Я заметил, что состояние во входящем запросе {} пусто, когда оно не должно быть

узел -v // 12.16.2

Google Chrome Версия 80.0.3987.163 (Официальная сборка) (64-разрядная версия)

package.json {

    "dependencies": {
    "@hapi/catbox-redis": "5.0.5",
    "@hapi/cookie": "11.0.1",
    "@hapi/h2o2": "9.0.1",
    "@hapi/hapi": "19.1.1",
    "@hapi/inert": "6.0.1",
    "@hapi/joi": "17.1.1",
    "@hapi/scooter": "6.0.0",
    "@hapi/wreck": "17.0.0",
}
server.auth.strategy('admin', 'cookie', {
    cookie: {
        name: Server.cookieName,
        password: auth_cookie_password,
        isSecure: false,
        ttl: Server.cacheCookieTtlMs
    },
    appendNext: true,
    redirectTo: outboundUrl,
    validateFunc: async (request: any, session: any) => {

    // blah blah

    }
      {
        method: ['GET', 'POST'],
        path: '/login',
        options: {
          auth: false,
          security: true
        },
        handler: async (request: any, h) => {
          try {

            const tokenSet = await authCallback();

            const session = {
              id: tokenSet.id,
            }

            request.cookieAuth.set(session);

            const returnScript = `<script type="application/javascript" >(function() { setTimeout(function() {window.location = "http://localhost:3000"})})()</script>`;


            return h.response(returnScript)
          } catch (e) {
            return h.response('Internal server error').code(500)
          }
        }
      }

любая помощь будет оценена.

1 Ответ

1 голос
/ 22 апреля 2020

Вы должны установить путь для Cook ie в /

. Cookies отправляются на сервер только тогда, когда URL запроса начинается со значения пути cookie. Когда вы пропускаете путь, по умолчанию используется URL-адрес запроса, получившего ответ с заголовком Set-Cook ie. Итак, допустим, что вы пропустили путь, и ваш повар ie настроен на URL-адрес, например https://example.com/login (что очень часто встречается), тогда повар ie будет отправляться только при запросах таких подпутей, как https://example.com/login/foo, что почти никогда не то, что вы хотите.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...