1
我很難理解passportjs驗證方法是如何工作的,特別是http-bearer策略。瞭解passportjs驗證方法
所以我有兩條路由,一條用於註冊,另一條用於訪問用戶的配置文件,它通過passportjs中間件。看看下面的代碼:
exports.register = function(req, res){
User.schema.statics.generateUserToken(function(t){
var user = new User({
token: t,
name: 'john doe',
});
user.save(function(e){
res.json(user)
});
});
};
我的認證策略如下:
var mongoose = require('mongoose'),
passport = require('passport'),
BearerStrategy = require('passport-http-bearer').Strategy;
passport.use(new BearerStrategy(
function(token, done) {
User.findOne({ token: token }, function (err, user) {
if (err) { return done(err); }
if (!user) { return done(null, false); }
return done(null, user, { scope: 'read' });
});
}
));
,你可以看到,當用戶請求的註冊,我的服務器返回了他的目標,其應該在本地保存的令牌。
然後,在一個受保護的路線,我添加了passportjs中間件,像這樣:
app.get('/me', passport.authenticate('bearer', { session: false }), routes.me);
,我明明看到未授權錯誤。爲什麼這是'passport.authenticate從我的客戶端獲取令牌?!這對我來說非常困惑,並且讓我發瘋。任何幫助?
此外,這是做令牌授權的正確方法嗎?或者我還需要更多的細節,如時間戳,到期等。