【发布时间】:2019-03-14 17:31:24
【问题描述】:
我有一个问题,我无法将用户重定向到有角度的路线,就像这里的例子:
- 我在登录页面,点击谷歌登录,重定向到谷歌,成功登录,然后我想进入我的应用程序,比如新闻提要。
到目前为止,我所做的是在 express 应用程序中使用护照。这是google的路线和护照策略。
router.get('/google', passport.authenticate('google', {
scope: ['profile', 'email']
}))
router.get('/google/callback', passport.authenticate('google', {
successRedirect: '/profile',
failureRedirect: '/'
}))
这是我存储用户的谷歌策略。
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,这是正常电子邮件登录的流程。
【问题讨论】:
-
你找到了实现这个的方法吗?
标签: javascript node.js angular express