2015-09-14 21 views
5

Tôi đang cố gắng thực hiện xác thực tên người dùng/mật khẩu cơ bản bằng passport.js và hộ chiếu địa phương.Express Passport.js Chuyển hướng thành công không tải trang, yêu cầu tiếp tục chờ xử lý

Trong khi failRedirect thực hiện chính xác những gì nó được yêu cầu làm, (chuyển hướng đến một trang được chỉ định), successRedirect tiếp tục chờ với yêu cầu cho trang được chỉ định của nó và sau một thời gian, nó trả về "trả lời trống".

http://www.deviantpics.com/VdG

Như bạn thấy trong ảnh này, khi nó được yêu cầu bảng điều khiển, nó nói rằng kích thước của nó là 0B, nhưng khi tôi đi trên bảng điều khiển mà không cần chuyển hướng nó nói nó có 1.6b.

Tôi đã xem xét tất cả qua Stackoverflow và tôi không thể tìm thấy câu trả lời có thể giúp tôi.

Bạn có thể vui lòng kiểm tra mã của tôi và đề xuất điều gì đó trước khi tôi bối rối không.

Đây là mã tải hộ chiếu

//set expression 
var expressSession = require('express-session'); 
app.use(expressSession({ 
    secret: credentials.session.secret 
})); 

//set passport 
var passport = require('passport'); 

var localStrategy = require('./strategies/auth/local.js'); 
passport.use('local', localStrategy); 

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

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

app.use(passport.initialize()); 
app.use(passport.session()); 

routes.js

module.exports = function (ứng dụng) {

//main 
app.get('/', main.home); 
app.get('/login', main.login); 
app.get('/signup', main.signup); 
app.post('/login', auth.loginLocal); 
app.post('/signup', main.checkSignup); 

//user 
app.get('/user/dashboard', user.dashboard); 
app.get('/user/addmemory', user.addMemory); 
app.get('/user/memory', user.memory); 

chức năng đăng nhập

exports.loginLocal = passport.authenticate('local', { 
    successRedirect: '/user/dashboard', 
    failureRedirect: '/login' 
}); 

chiến lược địa phương

var localAuthStrategy = new LocalStrategy(function(username, password, done) { 

    User.findOne({ 
     username: username 
    }, function(err, user) { 
     if (err) { 
      return done(err); 
     } 

     if (!user) { 
      return done(null, false, { 
       message: 'Incorrect username' 
      }); 
     } 

     if (!user.validPassword(password)) { 
      return done(null, false, { 
       message: 'Incorrect password' 
      }); 
     } 

     return done(null, user); 
    }); 


}); 

chức năng bảng điều khiển

exports.dashboard = function(req, res) { 
    res.render('user/dashboard', { 
     layout: 'user' 
    }); 
}; 

Trả lời

5

Tôi tìm thấy một câu trả lời cho câu hỏi của tôi, vấn đề là các mô hình tài khoản không được định nghĩa trong kịch bản nơi serializeUser và deserializeUser được xác định. tôi không thể tìm ra những gì đang xảy ra, bởi vì tôi đã không xác định bất kỳ hành động trong nắm bắt tất cả các xử lý, do đó, một điều cần nhớ, hãy chắc chắn để có bắt tất cả các xử lý được xác định để biết những gì đang xảy ra

app.use(function(err, req, res, next) { 
    console.log(err); 
}); 
+0

Tương tự như vậy cho tôi đã quên đặt dấu ngoặc đơn ở cuối serializeUser() - âm thầm không chuyển hướng, nhưng không có lỗi. Thậm chí tệ hơn là ứng dụng hoạt động tốt khi nhập sai chi tiết người dùng. – Bruford

Các vấn đề liên quan