护照未登录

时间:2017-06-15 05:36:37

标签: javascript node.js authentication passport.js passport-local

我正在使用Passport进行本地策略的用户身份验证。我无法登录,但我没有收到任何错误消息。我甚至设置了flash消息,但是当我尝试登录时我什么都没得到。

这是我的项目树

项目文件夹: │-index.js │-package.json │ ├───config │db.js │passage.js │ ├───controllers │counts.js │ ├───models │institution.js │user.js │ ├───routes │counts.js │user.js

/配置/护照:

const LocalStrategy = require('passport-local').Strategy;
const User = require('../models/user');
const bcrypt = require('bcryptjs');


module.exports = function (passport) {
  //  Configure Passport authentication
  passport.use(new LocalStrategy(
    function(username, password, done) {
      User.findOne({ username }, function(err, user) {
        if (err) { return done(err); }
        if (!user) {
          return done(null, false, { message: 'Incorrect username.' });
        }
        bcrypt.compare(password, user.password, function (err, isMatch) {
          if (err) throw error;
          if (isMatch) {
            return done(null, user);
          } else {
            return done(
              null,
              false,
              { message: "Incorrect Username or password" }
            );
          }
        })
      });
    })
  );
  passport.serializeUser(function(user, done) {
    console.log('serializing');
    done(null, user._id);
  });

  passport.deserializeUser(function(id, done) {
    User.findById(id, function(err, user) {
      done(err, user);
    });
  });
}

/ controllers / accounsts:

const handleLogin = function handleLogin (req, res, next) {
  passport.authenticate('local', {
    successRedirect: '/',
    failureRedirect: '/accounts/login',
    failureFlash: true
  }) (req, res, next);
}

/路由/帐户:

router.post('/login', accounts.handleLogin);

index.js

app.use(bodyParser.json());

// application/x-www-form-urlencoded parser
app.use(bodyParser.urlencoded({ extended: false }));

app.use(expressValidator());


app.use(cookieParser('keyboard cat'));

app.use(session({
  secret: 'keyboard cat',
  resave: true,
  saveUninitialized: true,
  cookie: { secure: true }
}));

app.use(flash());

app.use(function (req, res, next){
  res.locals.messages = messages(req, res);
  next();
});


app. use(passport.initialize());
app.use(passport.session());
require('./config/passport')(passport);

我还没弄清楚我做错了什么。登录保持重定向到故障重定向路由,并且不显示失败消息。

如何解决此问题

1 个答案:

答案 0 :(得分:0)

在index.js中 decalre"要求(' ./配置/护照&#39)(护照); "这是第一个,然后是

"应用程序。使用(passport.initialize()); app.use(passport.session());"

在passport.js下



KUBE_ADMISSION_CONTROL