Неизвестная стратегия аутентификации Hapi jwt

Я получаю сообщение об ошибке Hapi unknown authentication strategy jwt, но не знаю почему. Я уверен, что, возможно, что-то настроил не так, но вот мой сервер index.js:

Должен ли я использовать другую стратегию аутентификации? Также stackoverflow не позволит мне отправить свой вопрос, потому что это в основном код, но я не уверен, что еще отправить. Все детали здесь, и я не знаю, что еще добавить, чтобы предоставить больше информации, которую я могу. Я просто использую аутентификацию с config.auth.strategy и jwt в массиве.

const Hapi = require('@hapi/hapi');
const objection = require('objection');
const knex = require('./knex');
const authService = require('./auth/auth-service');
const JWTAuth = require('hapi-auth-jwt2');

const init = async () => {

    const server = Hapi.server({
        port: 9000,
        host: 'localhost',
        routes: { cors: {
            origin: ['*'],
            headers: ['Authorization'], 
            exposedHeaders: ['Accept'], 
            additionalExposedHeaders: ['Accept'], 
            maxAge: 60,
            credentials: true 
        }}
    });
    objection.Model.knex(require('./knex'));

    await server.register([
            {plugin: JWTAuth},
            {
                plugin: require('./movies/movie-routes'),
                routes: {prefix: '/movies'}
            }, {
                plugin: require('./user/user-routes'),
            }
        ])

    server.auth.strategy('jwt', 'jwt',{
            key: authService.jwtKey,
            validate: authService.validateJWT,
            verifyOptions: {algorithms: ['HS256']}, 
            errorFunc: (err)=> {return err},
            cookieKey: 'id_token'
        })
    await server.start();
    console.log('Server running on %s', server.info.uri);
};

process.on('unhandledRejection', (err) => {

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

init();


person austinthetaco    schedule 28.07.2020    source источник


Ответы (1)


Похоже, есть проблема с authService.validateJWT Я добавил пример аутентификации jwt HapiJs, пожалуйста, один раз для справки

const Hapi = require('@hapi/hapi');
const JWTAuth = require('hapi-auth-jwt2');

const init = async () => {

    const server = Hapi.server({
        port: 9000,
        host: 'localhost',
        routes: {
            cors: {
                origin: ['*'],
                headers: ['Authorization'],
                exposedHeaders: ['Accept'],
                additionalExposedHeaders: ['Accept'],
                maxAge: 60,
                credentials: true
            }
        }
    });

    await server.register([
        { plugin: JWTAuth }
    ])
    server.auth.strategy('jwt', 'jwt', {
        key: 'your-key',
        validate: async function (decoded, request) {
            if (!decoded) {
                return { isValid: false };
            } else {
                
                request.auth.credentials = {
                    'user': decoded,
                    'token': request.headers['authorization']
                };
                return { isValid: true };
            }
        },
        verifyOptions: { algorithms: ['HS256'] },
        cookieKey: 'id_token'
    });
    
    server.auth.default('jwt');
    server.route({
        method: 'GET',
        path: '/',
        handler: (request, h) => {

            return 'Hello World!';
        }
    });

    
    await server.start();
    console.log('Server running on %s', server.info.uri);
};

process.on('unhandledRejection', (err) => {

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

init();

person Rahul Patil    schedule 02.08.2020