Перенаправить пользователя на угловой маршрут после успеха Google Auth - PullRequest
0 голосов
/ 10 октября 2018

У меня проблема с тем, что я не могу перенаправить пользователя на угловой маршрут, как в следующем примере:

  • Я на странице входа в систему, нажмите google login, перенаправлен в google, успешно вошел в систему,и после этого я хочу зайти в свое приложение, например, в новостную ленту.

То, что я сделал на данный момент, так это с паспортом внутри экспресс-приложения.Вот стратегия маршрутов и паспортов для Google.

router.get('/google', passport.authenticate('google', {
  scope: ['profile', 'email']
}))

router.get('/google/callback', passport.authenticate('google', {
  successRedirect: '/profile',
  failureRedirect: '/'
}))

И это стратегия Google, в которой я храню пользователя.

    passport.use(new GoogleStrategy({
    clientID: Config.google.GOOGLE_CLIENT_ID,
    clientSecret: Config.google.GOOGLE_CLIENT_SECRET,
    callbackURL: Config.google.CALLBACK_URL,
    passReqToCallback : true
},
function(req, token, refreshToken, profile, done) {
    process.nextTick(function() {
        if (!req.user) {
            User.findOne({ 'google.id' : profile.id }, function(err, user) {
                if (err) { return done(err) }

                if (user) {
                    if (!user.google.token) {
                        user.google.token = token
                        user.google.name = profile.displayName
                        user.google.email = profile.emails[0].value;
                        user.username = profile.displayName.replace(/\s+/g, '-').toLowerCase();

                        user.save(function(err) {
                            if (err) { throw err }
                            return done(null, user)
                        })
                    }
                    return done(null, user)
                } else {
                    var newUser = new User()
                    newUser.google.id = profile.id
                    newUser.google.token = token
                    newUser.google.name = profile.displayName
                    newUser.google.email = profile.emails[0].value;
                    newUser.username = profile.displayName.replace(/\s+/g, '-').toLowerCase();

                    newUser.save(function(err) {
                        if (err) { throw err }
                        return done(null, newUser)
                    })
                }
            })
        } else {
            var user = req.user
            user.google.id = profile.id
            user.google.token = token
            user.google.name = profile.displayName
            user.google.email = profile.emails[0].value;
            user.username = profile.displayName.replace(/\s+/g, '-').toLowerCase();
            user.save(function(err) {
                if (err) { throw err }
                return done(null, user)
            })
        }
    })
}))

Так, как я могу сделать это, чтобы перенаправить на угловой маршрутнапример, localhost: 4200 / app / feed, который является потоком при обычной регистрации по электронной почте.

1 Ответ

0 голосов
/ 10 октября 2018

вы можете настроить его здесь и проверить

router.get('/google/callback', passport.authenticate('google', {
  successRedirect: '/profile',
  failureRedirect: '/'
}))

до

router.get('/google/callback', passport.authenticate('google', {
  successRedirect: '/app/feed',
  failureRedirect: '/'
}))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...