使用护照登录node.js

用户名

我正在使用护照实施基本的登录系统,但是使用正确的凭据登录时,我仍然收到此错误:

Express 500 TypeError:无法读取未定义的属性“ passport”

但是,当我通过重定向回登录页面使用错误的凭据登录时,效果很好。救命?

app.js

 //dependencies
 var express = require('express');
var routes = require('./routes');
var http = require('http');
var path = require('path');
var mongoose = require('mongoose');
var passport = require('./auth');

var app = express();
server = require('http').createServer(app),
    io = require('socket.io').listen(server);
// all environments
app.use(passport.initialize());
app.use(passport.session());
....
app.use(app.router);
app.use(require('less-middleware')({src: path.join(__dirname, 'public')}));
 app.use(express.static(path.join(__dirname, 'public')));
 ......
 //routes

 app.get('/login', routes.login);
app.post('/login', passport.authenticate('local', {
failureRedirect: '/login',
successRedirect: '/user'
}));

 app.get('/user', routes.user);

index.js

    exports.login = function(req, res) {
        res.render('login', {title: 'Log in'});
    };

     exports.user = function(req, res) {
   if (req.session.passport.user === undefined) {
        res.redirect('/login');
    } else {

       res.render('user', {title: 'Welcome!',
            user: req.user
        })
    }
    };

auth.js

     var passport = require('passport'),
    LocalStrategy = require('passport-local').Strategy;

passport.use(new LocalStrategy(
    function(username, password, done) {
        if (username === 'admin' && password === 'lynda') {
            return done(null, {username: 'admin'});
        }

        return done(null, false);
    }
));

passport.serializeUser(function(user, done) {
    done(null, user.username);
});

passport.deserializeUser(function(username, done) {
    done(null, {username: username});
});

module.exports = passport;
Daniel Flippance

您缺少会话声明,因此req.session是未定义的

app.use( express.cookieParser() );
app.use(express.session({ secret: 'my secret', cookie: { maxAge : 1200000 } }));  

另外,您似乎混淆了需求:

var passport = require('./auth');

我将其更改为:

var auth = require('./auth');

避免与护照库混淆

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

未处理的拒绝-护照登录应用程序节点js

来自分类Dev

回送护照登录

来自分类Dev

nodejs护照登录

来自分类Dev

护照登录重定向

来自分类Dev

护照登录重定向

来自分类Dev

Laravel 护照登录 (API)

来自分类Dev

护照登录和持续会话

来自分类Dev

successRedirect在护照登录本地护照中不起作用

来自分类Dev

使用护照登录社交日志用户到同一帐户

来自分类Dev

node.js:如何在koa中使用护照

来自分类Dev

Node.js 护照注册

来自分类Dev

使用Node.js登录

来自分类Dev

基于MongoDB查找的重定向护照登录

来自分类Dev

Node.js,Express,护照可以移动

来自分类Dev

node.JS Express护照路由

来自分类Dev

node.JS Express护照路由

来自分类Dev

使用护照在Node.js / Hapi应用中进行模块化

来自分类Dev

使用sequelize进行护照js本地认证

来自分类Dev

如何使用护照js保护名称空间?

来自分类Dev

护照-Node.js不返回刷新令牌

来自分类Dev

Node.js护照本地注册上的同步调用

来自分类Dev

Node JS护照的req.isAuthenticated返回始终为false

来自分类Dev

护照-Node.js不返回刷新令牌

来自分类Dev

Node.js护照将postdata传递给failureRedirect

来自分类Dev

Node.js护照-Facebook回调循环

来自分类Dev

如何使用Express从Node.js登录到ELK?

来自分类Dev

使用Bootstrap,Express和Node.js登录表单

来自分类Dev

使用node.js和Express的简单登录表单

来自分类Dev

使用Node.JS登录并刮取远程网站