回调 Passport Sequelize 的 404 错误
404 error for callback Passport Sequelize
我的登录系统基于 Scotch-IO's tutorial。
我已将其转换为使用 Sequelize 而不是 Mongoose,现在回调 GET 请求给我一个 404 错误。令牌已正确返回,数据库已更新,但浏览器会看到 404。
我认为这可能与在 then()
承诺中返回有关?
这是授权策略,不是认证。会话已包含用户对象。
passport.use(new FacebookStrategy({
clientID : configAuth.facebookAuth.clientID,
clientSecret : configAuth.facebookAuth.clientSecret,
callbackURL : configAuth.facebookAuth.callbackURL,
passReqToCallback : true
},
function(req, token, refreshToken, profile, done) {
process.nextTick(function() {
var user = req.user;
user.facebook_id = profile.id;
user.facebook_token = token;
user.save().then(function() {
return done(null, user)
})
})
}))
日志:
GET /connect/facebook 302 8ms - 478b
Executing (default): SELECT `id`, `local_email`, `local_password`, `facebook_id`, `facebook_token`, `facebook_email`, `facebook_name`, `twitter_id`, `twitter_token`, `twitter_displayName`, `twitter_username`, `google_id`, `google_token`, `google_email`, `google_name`, `createdAt`, `updatedAt` FROM `Users` AS `User` WHERE `User`.`id` = 1 LIMIT 1;
Executing (default): UPDATE `Users` SET `facebook_token`='CAAGHyJfSyzcBAMu7nJxbQQXVbNxHNMUjRvGUkpbz12JjYm9x7daKherDWGgrAFiPStFsbBtwPDBDvcnxY0mFEJipqzRtRL9VTZAUildByZCyWzwrKNDWabZBJAHJvY3Xrs2YB06YPkjkbs8juOlJtLgyRZA8UjO3WfFyEtcA5XFmVB0G5gbPsh32Fl5E0WUOidOpJiCdr1fGLnWXG551',`updatedAt`='2015-06-17 11:36:08.383 +00:00' WHERE `id` = 1
GET /connect/facebook/callback?code=AQD7jEuKTIIXNzLRzgMxmsH4xmNl5vBA_pErNDi0kRPCK0Jaa0iPidQBSe4Zy_c_pPxknkVWKPfqB9JetfFJwUD6-URqlCvJkGLkLUahj8xaXZEfPONGNQ8sjUzC-xftCWqyujrD_ELROwRSLF7YKl0cMvVARwjx-8bHOt7mvIDlBUts3nWFHlTwlOa2qJ1V2NgFyo7z_-nDlcwXIpdIydDKMWvtpQaY1-oLPUXQhs5eGjQRUIC5OUzQZnrIMLfs4X9e8IDx4MxHR0H_CoAwyk9ce0gChOOkccO3NcjIovNdePaLIdtOKIeHxFy6ZfxKzKDD7mROtc-hCY-lCOAljpW7 404 773ms
我使用的是 passport.authorize
,但没有从 req.account
获取令牌,而不是 req.user
,如 http://passportjs.org/docs/authorize
中所述
我实际上无法获得授权,并且已恢复调用身份验证,尽管用户已经登录。这工作正常。
我的登录系统基于 Scotch-IO's tutorial。
我已将其转换为使用 Sequelize 而不是 Mongoose,现在回调 GET 请求给我一个 404 错误。令牌已正确返回,数据库已更新,但浏览器会看到 404。
我认为这可能与在 then()
承诺中返回有关?
这是授权策略,不是认证。会话已包含用户对象。
passport.use(new FacebookStrategy({
clientID : configAuth.facebookAuth.clientID,
clientSecret : configAuth.facebookAuth.clientSecret,
callbackURL : configAuth.facebookAuth.callbackURL,
passReqToCallback : true
},
function(req, token, refreshToken, profile, done) {
process.nextTick(function() {
var user = req.user;
user.facebook_id = profile.id;
user.facebook_token = token;
user.save().then(function() {
return done(null, user)
})
})
}))
日志:
GET /connect/facebook 302 8ms - 478b
Executing (default): SELECT `id`, `local_email`, `local_password`, `facebook_id`, `facebook_token`, `facebook_email`, `facebook_name`, `twitter_id`, `twitter_token`, `twitter_displayName`, `twitter_username`, `google_id`, `google_token`, `google_email`, `google_name`, `createdAt`, `updatedAt` FROM `Users` AS `User` WHERE `User`.`id` = 1 LIMIT 1;
Executing (default): UPDATE `Users` SET `facebook_token`='CAAGHyJfSyzcBAMu7nJxbQQXVbNxHNMUjRvGUkpbz12JjYm9x7daKherDWGgrAFiPStFsbBtwPDBDvcnxY0mFEJipqzRtRL9VTZAUildByZCyWzwrKNDWabZBJAHJvY3Xrs2YB06YPkjkbs8juOlJtLgyRZA8UjO3WfFyEtcA5XFmVB0G5gbPsh32Fl5E0WUOidOpJiCdr1fGLnWXG551',`updatedAt`='2015-06-17 11:36:08.383 +00:00' WHERE `id` = 1
GET /connect/facebook/callback?code=AQD7jEuKTIIXNzLRzgMxmsH4xmNl5vBA_pErNDi0kRPCK0Jaa0iPidQBSe4Zy_c_pPxknkVWKPfqB9JetfFJwUD6-URqlCvJkGLkLUahj8xaXZEfPONGNQ8sjUzC-xftCWqyujrD_ELROwRSLF7YKl0cMvVARwjx-8bHOt7mvIDlBUts3nWFHlTwlOa2qJ1V2NgFyo7z_-nDlcwXIpdIydDKMWvtpQaY1-oLPUXQhs5eGjQRUIC5OUzQZnrIMLfs4X9e8IDx4MxHR0H_CoAwyk9ce0gChOOkccO3NcjIovNdePaLIdtOKIeHxFy6ZfxKzKDD7mROtc-hCY-lCOAljpW7 404 773ms
我使用的是 passport.authorize
,但没有从 req.account
获取令牌,而不是 req.user
,如 http://passportjs.org/docs/authorize
我实际上无法获得授权,并且已恢复调用身份验证,尽管用户已经登录。这工作正常。