2014-01-10 5 views
1

Мне сложно понять, как работает метод аутентификации passjs, в частности с помощью стратегии HTTP-носителя.понимание метода аутентификации passjs

Итак, у меня есть два маршрута: один для регистрации и один для доступа к профилю пользователя, который проходит через промежуточное программное обеспечение passjs. Посмотрите на следующий код:

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); 

где я, очевидно, получить несанкционированный ошибку. Почему это «где паспорт.authenticate получить токен от моего клиента ?! Это действительно сбивает меня с толку и сводит меня с ума. Любая помощь?

Кроме того, это правильный способ разрешения авторизации? Или мне также нужны некоторые подробности, такие как timestamp, expires и т. Д.?

ответ

Смежные вопросы