Die Implementierung von passport-http-bearer-token mit sails.js
Bin ich versucht zu implementieren passport passport-http-bearer
Strategie, aber es fand sich jedoch kein Benutzer mit info Bearer realm="Users"
.
Meine request
ist eine post-Anforderung:
{'token':'simple_access_token',}
Jemand hat eine Idee warum dieser Fehler Auftritt? Ich weiß auch hier req
sollte https
oder ssl
statt http
. Wie mache ich das?
Den code, den ich verwende, ist:
bearerPassportToken: function(req,res){
passport.authenticate('bearer', function(err, user, info){
if ((err) || (!user)) {
if (err) return;
if (!user)
console.log("info);//Info: Bearer realm="Users"
res.redirect('/login');
return;
}
req.logIn(user, function(err){
if (err){
res.redirect('/login');
}
//Need to write code for redirection
;
});
})(req, res);
},
Du musst angemeldet sein, um einen Kommentar abzugeben.
Mussten wir implementieren die Sicherung der Segel-basierte API mit bearer-Token vor kurzem, und hier ist, was wir getan haben (getestet mit
0.9.x
):1) Schließen Sie den Pass als eine benutzerdefinierte middleware in
config/passport.js
(oder kann es seinconfig/express.js
je nach Geschmack):2) befestigen notwendig-Controller/Aktionen mit einer Politik, in
config/policies.js
:3) die Richtlinie Erstellen, die prüft, die Inhaberaktien in
api/policies/authenticated.js
:4) Definieren Sie die Inhaber-Strategie für den Pass in
services/passport.js
(oder wo auch immer sonst Sie finden es besser geeignet für Ihre spezifische Anwendung):Diese Weise werden Sie in der Lage sein, um Zugriff auf die API, dass sich Ihre Träger in der
Authorization
header:Bearer 8j4s36...
.In diesem Beispiel wird ein separater server verwendet wurde, um die Anforderung/Ausgabe-Token, aber Sie könnte genauso gut tun Sie es innerhalb der gleichen app (dann haben Sie, um die Richtlinie anwenden zu ausgewählten Domänencontroller).
passport.authenticate
ist eine Funktion, die die Rückgabe einer Funktion, die aufgerufen wird, mit(req, res)
.passport.use('bearer', new BearerStrategy...
diefunction(accessToken, done)
nie ausgelöst wird.. keine Ahnung warum?config/policies.js
sowie inapi/policies/authenticated.js
.authenticated.js
, aber diefunction(token, cb)
Rückruf inservices/passport.js
wird nie ausgelöst. Ich habe überprüft, dass ich Rechtschreibung "Träger" korrekt in den Antrag und die meine app nutzt die middleware, die initialisiert Pass. Irgendwelche Ideen, was kann schief gehen? Ich bin mit Segel0.11.2
, Pass0.3.0
- und Pass-http-Träger1.0.2
.