Ich arbeite an einem Rest API-Projekt, das mit HapiJS geschrieben wurde. Nach dem Login-Vorgang erhält der Benutzer ein Token, um den Header jeder Anfrage zu übergeben. Benutzer haben unterschiedliche Rollen (Admin, Standard, Gast, Partner) und einige Api-Endpunkte sind nur für Benutzer mit einer bestimmten Rolle erreichbar. Jemand könnte mir helfen, diesen Scheck auf eine nette Art zu definieren, also ohne den Scheck jedes Mal innerhalb der Route zu schreiben?Rollenbasierte Authentifizierung in HapiJS
12
A
Antwort
23
Scopes
Sie können scopes
in hapi verwenden. Wenn Sie die Anforderung authentifizieren, indem die Header-Kontrolle, können Sie die scope
Eigenschaft der Anmeldeinformationen des Benutzers festgelegt:
var validateFunc = function (username, password, callback) {
... // Your logic here
return callback(null, true, {scope: 'admin'});
};
Wenn eine Route definieren, können Sie die scopes
gesetzt, die in der config.auth.scope
Eigenschaft zu diesem Endpunkt zulässig:
Jetzt können nur Benutzer, die mit dem Gültigkeitsbereich user
oder admin
authentifiziert sind, auf diese Route zugreifen.
Prozess
- auf einige Bereiche Entscheiden (admin, Super-User, Gast usw.)
- Konfigurieren Sie Ihre Authentifizierungsroutine korrekt die
scope
auf Anmeldeinformationen des Benutzers - Konfigurieren Sie Ihre Routen festgelegt durch die Einstellung
config.auth.scope
an wen auch immer Zugang erlaubt ist
Runnable Beispiel
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');
});
});
Verwandte Themen
- 1. Einfache rollenbasierte Authentifizierung ASP MVC?
- 2. Asp.Net Rollenbasierte Authentifizierung mit Sicherheitsgruppen in Active Directory
- 3. HapiJS - Controller in Routen setzen
- 4. Rollenbasierte Intranetsuche
- 5. Rollenbasierte Navigation
- 6. Rollenbasierte Zugriffssteuerung
- 7. Rollenbasierte Sicherheit mit Formularauthentifizierung
- 8. HapiJS Serving-Datei
- 9. HapiJS globale Pfadpräfix
- 10. Rollenbasierte Zugriffssteuerung (RBAC) - .Net Komponente
- 11. Rollenbasierte Profildaten in asp.net ProfilProvider
- 12. rollenbasierte Sicherheit in CRM 2016
- 13. Gebäude Rollenbasierte Anwendung
- 14. Iterate Fortsetzung Abfrage Ergebnismenge (Hapijs)
- 15. Überprüfung der leeren Zeichenfolge in hapijs Joi
- 16. ASP.NET Identität „rollenbasierte“ Forderungen
- 17. request.auth.session.set (user_info) funktioniert nicht HapiJS
- 18. Implementieren der Authentifizierung und rollenbasierte Autorisierung in ASP.NET MVC-Web-API-Dienst und MVC-Clientarchitektur
- 19. Rollenbasierte Rest-API mit JWT
- 20. Rollenbasierte Autorisierung mit exress-jwt?
- 21. Rollenbasierte Zugriffskontrollen (RBAC) mit Kontext?
- 22. JSON-Objekt an Hapijs Route senden
- 23. Design Django Rest Framework rollenbasierte Autorisierung
- 24. Rails: DRY Views für rollenbasierte Benutzer
- 25. Schienen 4 - rollenbasierte Autorisierung von Grund auf
- 26. Gibt es Rollen Authentifizierungsfunktionalität in Windows-Authentifizierung in ASP.NET integriert?
- 27. Jenkins Rollenbasierte Strategie für Agent-Builds
- 28. Wie wird die rollenbasierte Autorisierung in AngularJS gehandhabt?
- 29. Implementieren rollenbasierte Autorisierung in MVC und Web-API mit benutzerdefinierten Tabelle
- 30. Serving statische Dateien mit Nodejs und/oder hapijs - Routing
, wo Sie die Rückkehr des Rückrufs von validateFunc bekommen meine ich in Handler oder wo? Ich möchte das Ergebnis von validateFunc im Falle von impliziten API von Rest-Hapi-Modul erstellt werden.Oder im Detail überprüfen Sie bitte: - https://stackoverflow.com/questions/44546596/how-to-get-result-of-validatefunc- in-vor-automatisch-erstellt-api-rest-hapi –