0

だから私はここで問題を抱えています。ログインルートがあります:

var express = require('express');
var router = express.Router();
var passport = require('passport');
var LocalStrategy = require('passport-local').Strategy;
require('../config/passport')(passport, LocalStrategy);


/* GET /login */
router.get('/', function(req, res) {
  //you'll probably write some 
res.render('login', { title: 'Please Log In' });
});

router.post('/', function(req, res) {
console.log('posting');
console.log(passport);
passport.initialize();
passport.session();
passport.authenticate('local', { successRedirect: '/',
                                 failureRedirect: '/login'
                                });
console.log('after');
});
module.exports = router;

私のapp.js:

var express = require('express'),
  path = require('path'),
  favicon = require('serve-favicon'),
  logger = require('morgan'),
  cookieParser = require('cookie-parser'),
  bodyParser = require('body-parser'),
  session = require('express-session'), 
  RedisStore = require('connect-redis')(session),
  passport = require('passport'),

  //  LocalStrategy = require('passport-local').Strategy,
  pool = require('./config/database'),

  routes = require('./routes/index'),
  api = require('./routes/api'),
  login = require('./routes/login'),

  app = express();

// view engine setup
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'jade');

// uncomment after placing your favicon in /public
//app.use(favicon(__dirname + '/public/favicon.ico'));
app.use(logger('dev'));
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: false }));
app.use(cookieParser());
app.use(express.static(path.join(__dirname, 'public')));
app.use(session(<<redis store info>>);
app.use(passport.initialize());
app.use(passport.session());


app.use('/', routes);
app.use('/api', api);
app.use('/login', login);
...etc

そして私の ./config/passport.js

var pool = require('./database');

module.exports = function(passport, LocalStrategy) {


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

// used to deserialize the user
passport.deserializeUser(function(id, done) {
    mysql.query("select * from users where id = "+id,function(err,rows){    
        done(err, rows[0]);
    });
});

passport.use(new LocalStrategy({
    usernameField : 'username',
    passwordField : 'password',
    passReqToCallback : true // allows us to pass back the entire request to the callback
},
function(req, username, password, done) { // callback with user and password from our form
    console.log('hi');
     pool.query("SELECT * FROM `users` WHERE `user` = '" + username + "'",function(err,rows){
        if (err)
            return done(err);
         if (!rows.length) {
            return done(null, false, req.flash('loginMessage', 'No user found.')); // req.flash is the way to set flashdata using connect-flash
        } 

        // if the user is found but the password is wrong
        if (!( rows[0].password == password))
            return done(null, false, req.flash('loginMessage', 'Oops! Wrong password.')); // create the loginMessage and save it to session as flashdata

        // all is well, return successful user
        return done(null, rows[0]);         

    });

}));

};

そして、パスポートの設定がまったく処理されていないように見える理由がよくわかりません。Passport.authenticate を呼び出すと、何もしていないように見えます

4

1 に答える 1