hapijs как проверить сессию в каждом запросе - PullRequest
0 голосов
/ 14 июня 2019

Я хотел бы знать, как лучше всего проверять h.state при каждом обращении в службу hapijs.

Я создаю сессию так:

server.route({
    method: 'POST',
    path: '/createSession',
    config: {
        cors: {
            origin: ['mysite']


        }
    },
    handler: function (request, h) {
        let cookie = request.state.session

        if (!cookie) {
            cookie = {
                username: 'emiliano',
                firstVisit: false                   
            }
        }
        cookie.lastVisit = Date.now()
        return h.response('test').state('session', cookie)
    }

});

как я могу проверить, есть ли cookie в каждом запросе? Возможно ли сделать это в server.ext?

1 Ответ

0 голосов
/ 14 июня 2019

Вы можете использовать методы жизненного цикла Hapi и создать простой плагин для проверки файлов cookie в каждом запросе.Вы можете использовать onPreHandler, потому что hapi выполнит onPreHandler непосредственно перед обработчиками маршрута и после внутренней обработки куки-файлов (состояния).Если вы хотите вмешаться раньше всего (до разбора файлов cookie), вы можете использовать onRequest.

Вот простой плагин, который вы можете использовать.Вы также можете прочитать больше о методах жизненного цикла здесь

exports.plugin = {
    async register(server, options) {
        server.ext('onPreHandler', async (request, h) => {
            // do your cookie stuff here

            return h.continue;
        });      
    },
    name: 'check-cookie'    
};
...