app.get(“/ api / current_user”..不会在passport.jsvalidation后触发
我是NodeJS的新手。 我正在尝试创build一个简单的Web服务器。 我现在只使用NodeJS和Passport.js(使用谷歌战略)。
目前,所有的app.get(“”)调用工作,当我没有身份validation,但一旦我authentication与谷歌和callback发生,我不能再访问任何app.get路线。 我试着在箭头函数中放置一个断点,它从来没有调用,只是从浏览器加载auth cookie时挂起。
这是我目前的代码:
Index.js
const express = require('express'); const mongoose = require('mongoose'); const cookieSession = require("cookie-session"); const passport = require("passport"); const keys = require('./config/keys'); require('./models/User'); require('./services/passport'); mongoose.connect(keys.mongoURI); const app = express(); app.use( cookieSession({ maxAge: 30 * 24 * 60 * 60 * 1000, //30 days keys: [keys.cookieKey] }) ); app.use(passport.initialize()); app.use(passport.session()); require('./routes/authRoutes')(app); const PORT = process.env.PORT || 5000; app.listen(PORT);
authRoutes.js
const passport = require('passport'); module.exports = (app) => { app.get( "/auth/google", passport.authenticate('google', { scope: ['profile', 'email'] }) ); app.get( '/auth/google/callback', passport.authenticate('google') ); app.get("/api/logout", (req, res) => { req.logout(); res.send(req.user); }); app.get("/api/current_user", (req, res) => { res.send("test");//req.user); //Tried as a test, is called when //not authenticated, but does not get //called when authenticated }); }
passport.js
const passport = require('passport'); const googleStrategy = require('passport-google-oauth20'); const mongoose = require('mongoose'); const keys = require('../config/keys'); const User = mongoose.model("users"); passport.serializeUser((user, done) => { done(null, user.id); }); passport.deserializeUser((id, done)=> { User.findById(id) .then(user =>{ doen(null, user); }); }); passport.use(new googleStrategy({ clientID: keys.googleClientID, clientSecret: keys.googleclientSecret, callbackURL: '/auth/google/callback' }, (accessToken, refreshToken, profile, done) => { User.findOne({ googleId: profile.id }) .then((existingUser) => { if (existingUser){ //we already have a user done(null, existingUser); } else{ new User({ googleId: profile.id }) .save() .then (user => done(null, user)); } }); }) );
这可能不会帮助任何人除了事实检查TYPOS!
我在这里发现我的问题:
passport.deserializeUser((id, done)=> { User.findById(id) .then(user =>{ doen(null, user); }); });
注意doen应该完成
我没有得到任何帮助我的错误信息。
- 比document.write()更好的实践来加载网站中的外国内容?
- TypeError:当构造Javascript w / new时,Object不是Object。<anonymous>的函数
- httpdispatcher中的setStatic函数
- 读取等待input的产生的进程的stdout
- 如何从async.js系列返回结果
- Express路由器发布function不起作用
- asynchronous/等待和ES6产出与发电机之间的差异
- 如何从Node.js中的路由查询string获取数据与Ajax?
- 无法在量angular器中使用–suites选项,因此会出现“Spec patterns与任何文件不匹配”错误