Написание кода для аутентификации пользователей с использованием паспорта, с использованием паспорт-linkedin-oauth2, паспорт-google-oauth2, паспорт-facebook и паспорт-твиттер.Доступ к информации о сеансе в паспорте
ОК, то, что я использую, не так важно, но может быть полезно знать. То, что я пытаюсь сделать, это выяснить простой способ передать переменные во внутренний код, чтобы принимать решения. Так, например. В настоящее время система только делает свою базу децификации по погоде или не работает аутентификация. Если вы заходите на регистрацию или авторизуетесь, и вы нажмете кнопку Google, вы войдете в систему.
Однако я хочу, чтобы код мог определить, что запрос поступает из регистрации (в этом случае a новый пользователь имеет успех, существующий пользователь должен отправить обратно код и сообщение с сообщением «Пользователь уже зарегистрирован»). То же самое с логином. Однако, если «существующий» пользователь имеет явный успех, если вы нажмете «login» и его новый пользователь, он вернет сообщение с сообщением «Пользователь не зарегистрирован», который позволяет переднему концу представить приятную кнопку с надписью «Register пользователь».
Моя проблема в том, что это простой способ передать это на бэкэнд. два пути для вызова в настоящее время являются:
// =====================================
// Google ROUTES =====================
// =====================================
// route for google authentication and login
router.get('/at/google', passport.authenticate('google', { scope : 'email' }));
// handle the callback after Google has authenticated the user
router.get('/cb/google',
passport.authenticate('google', {
successRedirect : '/',
failureRedirect : '/login',
failureFlash: true //This is where we send the failed logins
}));
отлично работает, но они называют один и тот же объект, как и я действительно очень ленив, и хочет, чтобы один объект обрабатывать все.
Я устал установку значения сеанса в предыдущей странице (страница регистрации):
router.get('/login', function(req, res) {
req.session.passportOpType = "login";
res.render('login.ejs', { title: 'Betchanow - Social betting as it should be' , loginUrl: cfgWebPage.loginUrl, trackingID: cfgWebPage.googleTracking.trackingID, message: req.flash('loginMessage') });
});
router.get('/signup', function(req, res) {
req.session.passportOpType = "signup";
res.render('signup.ejs', { title: 'Betchanow - Social betting as it should be' , loginUrl: cfgWebPage.loginUrl, trackingID: cfgWebPage.googleTracking.trackingID, message: req.flash('signupMessage') });
});
А потом выбрать, что в конце концов Google паспорта
// =========================================================================
// GOOGLE ==================================================================
// =========================================================================
passport.use(new GoogleStrategy({
clientID : configAuth.googleAuth.clientID,
clientSecret : configAuth.googleAuth.clientSecret,
callbackURL : configAuth.googleAuth.callbackURL,
passReqToCallback : true
},
function(request, accessToken, refreshToken, profile, done) {
// make the code asynchronous
// User.findOne won't fire until we have all our data back from Google
process.nextTick(function(req) {
console.log("This is a " + req.session.authtype)
Однако, значение на данном этапе не определено. Это может быть из-за его обратного вызова.
Невозможно сохранить хранение сеанса. Мой вопрос сейчас, хотя есть. Как это сделать прямолинейно, желательно независимо от того, какой тип паспорта я использую?