【问题标题】:hapijs how to check the session in each requesthapijs 如何检查每个请求中的会话
【发布时间】:2019-06-17 15:49:03
【问题描述】:

我想知道在每次调用 hapijs 服务时检查 h.state 的最佳方法是什么。

我这样创建会话:

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 中执行此操作?

【问题讨论】:

    标签: session-cookies hapijs


    【解决方案1】:

    您可以使用 Hapi 的生命周期方法并创建一个简单的插件来检查每个请求中的 cookie。您可以使用onPreHandler,因为hapi 将在路由处理程序之前和内部处理cookie(状态)之后执行onPreHandler。如果您想在其他所有事情之前进行干预(在 cookie 解析之前),您可以使用onRequest

    这是您可以使用的简单插件。您还可以阅读更多关于生命周期方法的信息here

    exports.plugin = {
        async register(server, options) {
            server.ext('onPreHandler', async (request, h) => {
                // do your cookie stuff here
    
                return h.continue;
            });      
        },
        name: 'check-cookie'    
    };
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-06-17
      • 1970-01-01
      • 2020-02-19
      • 2012-06-30
      • 2021-02-01
      • 2014-03-29
      相关资源
      最近更新 更多