Я работаю над первым проектом API для отдыха, написанным с помощью HapiJS. После процесса входа пользователь получает маркер для передачи в заголовке каждого запроса. Пользователи имеют разные роли (admin, standard, guest, partners), а некоторые конечные точки Api доступны только пользователям с определенной ролью. Кто-то может помочь мне в определении этой проверки в хорошем смысле, поэтому, не записывая проверку каждый раз внутри маршрута?Аутентификация на основе ролей в HapiJS
12
A
ответ
23
Прицелы
Вы можете использовать scopes
в Хапи. При аутентификации запроса путем проверки заголовка, вы можете установить scope
свойства учетных данных пользователя:
var validateFunc = function (username, password, callback) {
... // Your logic here
return callback(null, true, {scope: 'admin'});
};
При определении маршрута вы можете установить scopes
, которые разрешено к этой конечной точке в config.auth.scope
собственности:
server.route({
...
config: {
auth: {
strategy: 'simple',
scope: ['user', 'admin']
},
}
...
});
Теперь только пользователи, прошедшие проверку подлинности в диапазоне user
или admin
, смогут получить доступ к этому маршруту.
Процесс
- Принятие решения о некоторых областях (администратор, суперпользователя, гостевых и т.д.)
- Настройте процедуру аутентификации, чтобы правильно установить
scope
учетные данные пользователя - Настройте маршруты, установив
config.auth.scope
К К нему разрешен доступ
Runnable Пример
var Hapi = require('hapi');
var server = new Hapi.Server();
server.connection({ port: 4000 });
server.register(require('hapi-auth-basic'), function (err) {
if(err) {
throw err;
}
server.auth.strategy('simple', 'basic', {
validateFunc: function (username, password, callback) {
if (username === 'admin') {
return callback(null, true, {scope: 'admin'}); // They're an `admin`
}
if (username === 'user') {
return callback(null, true, {scope: 'user'}); // They're a `user`
}
return callback(null, false);
}
});
server.route([{
config: {
auth: {
strategy: 'simple',
scope: ['admin'] // Only admin
},
},
method: 'GET',
path: '/admin',
handler: function(request, reply) {
reply('Admin page');
}
}, {
config: {
auth: {
strategy: 'simple',
scope: ['user', 'admin'] // user or admin
},
},
method: 'GET',
path: '/user',
handler: function(request, reply) {
reply('User page');
}
}
]);
server.start(function() {
console.log('Started server');
});
});
Смежные вопросы
- 1. Аутентификация на основе ролей
- 2. Масштабируемая аутентификация на основе ролей
- 3. аутентификация маршрутов на основе ролей
- 4. Аутентификация на основе ролей asp.net mvc
- 5. Простая аутентификация на основе ролей ASP MVC?
- 6. Аутентификация на основе ролей с Firebase
- 7. Аутентификация JMX - операции MBean на основе ролей
- 8. Аутентификация на основе ролей с использованием LDAP в ASP.Net
- 9. Аутентификация OAuth2 на основе ролей для поставщика услуг в WSO2
- 10. Аутентификация на основе ролей с firebase и angularjs
- 11. Аутентификация на основе ролей на основе ASP.NET и на основе страниц (класс страницы) Ограничения доступа
- 12. (Ruby, Rails) Аутентификация на основе ролей и управление пользователями ...?
- 13. Аутентификация ролей в ASP.NET - использование ролей в качестве действий?
- 14. доступ на основе ролей
- 15. Навигация на основе ролей
- 16. Авторизация на основе ролей
- 17. Аутентификация Windows - проверка ролей
- 18. Ограничения на основе ролей на основе Winforms
- 19. Разработка ролей на основе профилей
- 20. Представления на основе ролей Django?
- 21. перенаправить пользователя на основе ролей?
- 22. Формы Аутентификация для разных ролей?
- 23. Войти на основе ролей пользователей
- 24. AngularJS - Навигация на основе ролей
- 25. Управление доступом на основе ролей
- 26. Отображать содержимое на основе ролей
- 27. Реализация помощников на основе ролей
- 28. Управление доступом на основе ролей
- 29. показать gridview на основе ролей
- 30. Аутентификация ролей без использования базы данных
где вы получите возврат обратного вызова validateFunc я имею в виду в обработчике или где? Я хочу получить результат validateFunc в случае неявного API, созданного модулем Rest-Hapi. Кроме того, проверьте: - https://stackoverflow.com/questions/44546596/how-to-get-result-of-validatefunc- в-заранее из-авто созданных-апи-Rest-Хапи –