如何允许用户在 Node JS Passport JS 失败后尝试使用不同的电子邮件?
How to allow user to try a different email after failure in NodeJS PassportJS?
目前我正在使用以下代码检查用户是否拥有某个域名电子邮件地址。最初,当显示 google 身份验证 window 时,如果用户已经登录到 Chrome,则无法更改其电子邮件地址。当我使用 Google 身份验证登录类似网站时,我似乎记得被允许添加电子邮件地址或类似性质的内容。
因此,假设用户尝试使用非 lsmsa.edu 电子邮件地址登录,但失败了。目前它显示一个讨厌的错误。我如何才能允许用户尝试使用不同的电子邮件地址重新登录。
if ( profile.emails[0].value.indexOf("lsmsa.edu") > -1 ) {
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.save(function(err) {
if (err) throw err
return done(null, newUser)
})
}
else {
done(new Error("Invalid Domain. Must use LSMSA email address."))
}
查看 hd
parameter。它确保用户只能使用正确的电子邮件登录。
编辑: 这不是每个请求的选项。如果您想将它与 passport-google-oauth
一起使用,请将您的配置编辑为如下所示:
passport.use(new GoogleStrategy({
returnURL: 'http://www.example.com/auth/google/return',
realm: 'http://www.example.com/',
// Add this
hd: 'example.com'
},
function(identifier, profile, done) {
// Blah Blah Blah, Blow up Pluto, Milk Cows, Eat Chocolate, Etc.
}
));
编辑: 如果出于某种原因您 需要 让他们再次登录,而不是使用 hd
,只需销毁会话 (req.session.destroy();
),然后将它们重定向到您的身份验证 url(即 /auth/google
)。但是,使用 hd
将获得更好的用户体验。
目前我正在使用以下代码检查用户是否拥有某个域名电子邮件地址。最初,当显示 google 身份验证 window 时,如果用户已经登录到 Chrome,则无法更改其电子邮件地址。当我使用 Google 身份验证登录类似网站时,我似乎记得被允许添加电子邮件地址或类似性质的内容。
因此,假设用户尝试使用非 lsmsa.edu 电子邮件地址登录,但失败了。目前它显示一个讨厌的错误。我如何才能允许用户尝试使用不同的电子邮件地址重新登录。
if ( profile.emails[0].value.indexOf("lsmsa.edu") > -1 ) {
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.save(function(err) {
if (err) throw err
return done(null, newUser)
})
}
else {
done(new Error("Invalid Domain. Must use LSMSA email address."))
}
查看 hd
parameter。它确保用户只能使用正确的电子邮件登录。
编辑: 这不是每个请求的选项。如果您想将它与 passport-google-oauth
一起使用,请将您的配置编辑为如下所示:
passport.use(new GoogleStrategy({
returnURL: 'http://www.example.com/auth/google/return',
realm: 'http://www.example.com/',
// Add this
hd: 'example.com'
},
function(identifier, profile, done) {
// Blah Blah Blah, Blow up Pluto, Milk Cows, Eat Chocolate, Etc.
}
));
编辑: 如果出于某种原因您 需要 让他们再次登录,而不是使用 hd
,只需销毁会话 (req.session.destroy();
),然后将它们重定向到您的身份验证 url(即 /auth/google
)。但是,使用 hd
将获得更好的用户体验。