【发布时间】:2014-09-03 04:54:33
【问题描述】:
我正在编写一个网站,其内容不应被访问,除非用户已通过 Google 登录(并且他们的电子邮件在硬编码列表中)。 PassportJS 使用像
这样的中间件让这一切变得简单app.all '*', (req, res, next) ->
if req.isAuthenticated()
next()
else
passport.authenticate('google')(req, res, next)
如果用户未通过身份验证,他们将被转移到 Google 进行身份验证 - 到目前为止一切顺利。当 Google 对用户进行身份验证时,它会将他们发送到我的返回网址:
app.get '/auth/google/return', passport.authenticate('google',
successRedirect: '/'
failureRedirect: '/login'
)
但是,我不想将我的用户发送回/,我想将他们发送到他们尝试访问的原始网址。
当我的中间件发现他们未经身份验证并将他们踢到 Google 时,我如何使用 passportjs/passport-google 将我的用户重定向到他们最初尝试访问的页面?
我看到了一些使用会话状态的建议,但我不想这样做,因为它很笨拙——我想如果用户打开站点的多个选项卡并被要求在每个选项卡上登录,所有标签最终会指向最后一个试图访问的 url。
有没有办法在没有会话的情况下做到这一点?
【问题讨论】:
标签: express google-oauth passport.js