成功通过Google身份验证后将用户重定向到Angular路由

时间:2018-10-09 21:17:57

标签: javascript node.js angular express

我有一个问题,我无法将用户重定向到角度路线,例如以下示例:

  • 我在登录页面上,单击google登录,重定向到google,成功登录,然后我要进入我的应用程序,例如新闻提要。

到目前为止,我对护照所做的事情是在Express应用程序内进行的。这是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 :(得分:1)

您可以在此处进行配置并检查

 > Activating com.acme.persistence.audit component
  ...
 > Adding com.acme.persistence.test.ProductListenerImpl@1337
 > Adding null

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