Passport.js本地策略不带mongoose

我试图find有关节点应用程序的最简单的login与护照资源。 我的意思是,使用:

中间件:

app.use(bodyParser.json()); app.use(bodyParser.urlencoded({extended: false})); app.use(cookieParser()); app.use(session({ secret: 'keyboard cat', resave: false, saveUninitialized: false })); app.use(passport.initialize()); app.use(passport.session()); app.use(express.static('public')); 

护照:

 passport.serializeUser(function(user, done) { done(null, user.id); }); passport.deserializeUser(function(id, done) { done({ id: id, nickname: "test"}) }); passport.use(new LocalStrategy( function(username, password, done) { console.log("test"); if (username === 'username') { return done(null, { name: "test", id: '1234'}); } else { return done(null, false, { message: 'Incorrect cred.' }); } }) ) 

和redirect:

  app.post('/login', passport.authenticate('local', { successRedirect: '/index.html', failureRedirect: '/login' }) ); 

我的应用程序结构

 /app.js /public/index.html /public/login.html 

就是这样。 networking充满了与插件的Mongoose相同的例子,每个人都只是互相粘贴。

重点在于,稍后我会在LocalStrategy代码中插入我自己的代码(可能会使用LDAP)。

目前,我只是收到index.html上的[object Object] ,而不是使用在公共文件夹中创build的页面redirect到/index.html。

你的passport.deserializeUser()是不正确的:

 passport.deserializeUser(function(id, done) { done({ id: id, nickname: "test"}) }); 

它传递“用户”对象作为第一个参数done ,这是保留的错误。 这会导致Express呈现错误页面,尝试对错误进行string化,从而导致[object Object]

尝试这个:

 passport.deserializeUser(function(id, done) { done(null, { id: id, nickname: "test"}) }); 

发现问题! redirect不起作用,所以我回头看,注意到express.static mw在护照初始化()后被设置,而不是在BEFORE之前。 我只是把它移到顶部,然后..彩虹