如何将 hapi 身份验证插件变为可选插件

Mon*_*key 6 authentication node.js hapijs

我想使用 hapi jwt 令牌身份验证插件https://github.com/ryanfitz/hapi-auth-jwt但使用可选身份验证创建路由。如何防止路由返回 401,而是继续使用空 request.auth.credentials 执行。

我希望使用它的所有其他路由保持相同的实现,即在未经身份验证的请求上返回 401。

server.register(require('hapi-auth-jwt'), function (error) {

    server.auth.strategy('token', 'jwt', {
        key: privateKey,
        validateFunc: validate
    });

    //make this one allow anonymous while also reading logged in credentials
    server.route({
        method: 'GET',
        path: '/',
        config: {
            auth: 'token'
        }
    });

    server.route({
        method: 'GET',
        path: '/mystuff',
        config: {
            auth: 'token'
        }
    });
});


server.start();
Run Code Online (Sandbox Code Playgroud)

Ger*_*osi 7

您可以在路由配置中将其设置为可选:

server.route({
    method: 'GET',
    path: '/',
    config: {
        auth: {
            strategy: 'token',
            mode: 'optional'
        }    
    }
});
Run Code Online (Sandbox Code Playgroud)

模式可以是truefalserequiredoptional,或try。有关更多详细信息,请参阅身份验证教程