2014-01-10 31 views
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從我的客戶端獲取令牌?!這對我來說非常困惑,並且讓我發瘋。任何幫助?

此外,這是做令牌授權的正確方法嗎?或者我還需要更多的細節,如時間戳,到期等。

回答