2016-11-28 8 views
1

Мы используем hapijs и oauth для аутентификации. нам нужно реализовать авторизацию на основе роли в hapijs. ниже пути, отлично подходит для hapijs.Протокол авторизации API с Hapijs и oauth 2

  1. схема аутентификации Регистрация

    server.auth.scheme('custom', function (server, options) { 
    
        return { 
    
         authenticate: function (request, reply) { 
         // calling oauth flow for roles match 
        } 
    }); 
    
  2. стратегия Регистрация аутентификации & добавление аутентификации, ролей в server.route

    server.auth.strategy('default', 'custom'); 
    
    server.route({ 
        method: 'GET', 
        path: API_Path, 
        config: { 
         roles: ['ADMIN', 'USER'], 
         auth : 'default' 
        }, 
        handler: function (request, reply) {     
         return reply.act({ 
          role: 'admin', 
          cmd: 'getInfo', 
          id: request.params.id 
         }); 
        } 
    }); 
    

ответ

0

Вы должны зарегистрировать стратегию и проверки учетных данных, как это.

const validate = function (request, username, password, callback) { 
const user = users[username]; 
if (!user) { 
    return callback(null, false); 
} 

Bcrypt.compare(password, user.password, (err, isValid) => { 
    callback(err, isValid, { id: user.id, name: user.name }); 
}); 
}; 

server.auth.strategy(strategy_name, scheme_name, { validateFunc: validate }); 

Ваш Auth должен иметь такие опции, как режим, рамки, стратегии и т.д.

... 
... 
auth :{ 
    mode:'required', 
    strategy:'strategy_name', 
    scope: ['ADMIN', 'USER'] 
}, 
... 
... 

Вы можете использовать Bell

 Смежные вопросы

  • Нет связанных вопросов^_^