2014-11-20 3 views
1

В настоящее время я работаю на веб-сайте Angularjs, который использует JWT (токены json web), чтобы проверить, зарегистрирован ли кто-либо или нет. Теперь я хочу добавить некоторые методы входа «одним щелчком», используя паспорт/oauth, но мне трудно понять, как я могу передать данные для входа обратно в angularjs.Использование паспорта oauth в angularjs с JWT

Когда я Войти с электронной почтой/пароль, сгенерировать маркер и передать его обратно в угловой:

var token = jwt.sign({ _id: user._id.toString() }, JWT_SECRET); 
return res.json({ 
    userID: user._id.toString(), 
    username: user.username, 
    isAdmin: user.isAdmin, 
    token: token 
}); 

И маркер используется для проверки входа в систему. Когда вы проходите через oauth, вы должны покинуть сайт, а затем вернуться, поэтому я не могу просто вернуть некоторый токен из ajax таким же образом.

Я думал, что это может сработать, чтобы добавить его в мой проверочный звонок (когда кто-то обновляет веб-сайт, я запускаю чек, чтобы проверить, вошли ли они в систему уже). Это проверяет токен и возвращает правильные пользовательские данные. Есть ли способ проверить, зарегистрирован ли паспорт уже здесь? Мой проверить код выглядит следующим образом (JWT автомагически устанавливает маркер информации к req.user):

Schemas.User.findOne({ _id: req.user._id }, function (err, user) { 
    if (err || !user) { return res.send(401); } 
    return res.json({ 
    userID: user._id.toString(), 
    username: user.username, 
    isAdmin: user.isAdmin 
    }); 
}); 

ответ

0

Так у меня было несколько вопросов. Я неправильно использовал паспорт (я забыл добавить сериализацию/десериализацию). Затем в моем обратном вызове я установил в него файл cookie с JWT (я также не понял, что паспорт также автоматически устанавливает req.user), и проверил, чтобы файл cookie был угловатым. Если файл cookie существует, я устанавливаю его в локальное хранилище и удаляю файл cookie. Работает как шарм!

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