我有一项服务,我的目标是让用户通过OAuth授权我们使用他/她的Github帐户。 API层是无状态的,因此我不想维护任何会话信息。我到目前为止的代码是:
app.use passport.initialize()
app.use passport.session()
passport.use new GitHubStrategy
clientID: global.config.oauth.github.clientID
clientSecret: global.config.oauth.github.clientSecret
callbackURL: "http://localhost:9500/auth/github/callback"
passReqToCallback: true
, (req, accessToken, refreshToken, profile, done) ->
console.log req.params
serviceQuery =
service: 'github'
provider_id: "#{profile.id}"
UserId: 13
global.db.Service.find
where: serviceQuery
.then (dbService) ->
if not dbService
newService =
service: 'github'
token: accessToken
secret: null
provider_id: profile.id
raw: profile._json
UserId: 13
global.db.Service.create newService
else
dbService.token = accessToken
dbService.raw = profile._json
dbService.save()
.then ->
done null, true
app.get '/auth/github/:sessionToken', (req, res, next) ->
console.log req.params
next()
, passport.authenticate 'github',
scope: 'repo'
session: false
app.get '/auth/github/callback', passport.authenticate('github',
scope: 'repo'
session: false
), (req, res) ->
res.redirect 'http://localhost:8080/app'
因此,当用户被定向到/auth/github/:sessionToken
时,我希望passport
能够发挥其魔力并将用户重定向到github。这非常有效。但是当他们返回/auth/github/callback
时,我仍然需要确定它是哪个用户。
由于这是API服务,它应该是无状态的,所以正如我之前提到的,我正在寻找一些方法将该标记传递给/auth/github/callback
。我怎么能做到这一点?
答案 0 :(得分:2)
在/ auth / github / callback中尝试req.user的控制台日志。我相信req.user仍然会存储他们的用户信息。正如this tutorial中所示,它们通过传入req.user传递要显示的用户信息。