hapi-auth-bearer-token работает только для access_token в строке запроса, а не в качестве заголовка - PullRequest
0 голосов
/ 06 ноября 2019

Как мне заставить hapi-auth-bearer-token работать, используя access_token в качестве заголовков http вместо передачи его в строке запроса? В документации довольно ясно, что это должно работать, но это не так, как вы можете видеть из моих скриншотов ниже.

const Hapi = require('hapi');
const AuthBearer = require('hapi-auth-bearer-token');

const server = Hapi.server({ port: 8080 });

const start = async () => {

    await server.register(AuthBearer)

    server.auth.strategy('simple', 'bearer-access-token', {
        allowQueryToken: true,              // optional, false by default
        validate: async (request, token, h) => {

            // here is where you validate your token
            // comparing with token from your database for example
            const isValid = token === '1234';

            const credentials = { token };
            const artifacts = { test: 'info' };

            return { isValid, credentials, artifacts };
        }
    });

    server.auth.default('simple');

    server.route({
        method: 'GET',
        path: '/',
        handler: async function (request, h) {

            return { info: 'success!' };
        }
    });

    await server.start();

    return server;
}

start()
    .then((server) => console.log(`Server listening on ${server.info.uri}`))
    .catch(err => {

        console.error(err);
        process.exit(1);
    })

Строка запроса access_token работает:

Query string works:

Заголовок access_token не:

enter image description here

1 Ответ

0 голосов
/ 11 ноября 2019

hapi-auth-bearer-token требует токен на предъявителя, что означает, что значение должно быть Bearer 1234, а не просто 1234. В моем случае мне пришлось использовать его без слова Bearer, поэтому я покопался в исходном коде плагина и развернул собственную реализацию.

...