修改app.js
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 |
var express = require('express'); var passport = require('passport'); var logger = require('morgan'); var Strategy = require('passport-local').Strategy; var db = require('./mongodb'); var routes = require('./routes/index'); var users = require('./routes/users'); passport.use(new Strategy( function(username, password, cb) { db.users.findByUsername(username, function(err, user) { if (err) { return cb(err); } if (!user) { return cb(null, false); } if (user.password != password) { return cb(null, false); } return cb(null, user); }); })); passport.serializeUser(function(user, cb) { cb(null, user._id); }); passport.deserializeUser(function(id, cb) { db.users.findById(id, function (err, user) { if (err) { return cb(err); } cb(null, user); }); }); var app = express(); app.set('views', __dirname + '/views'); app.set('view engine', 'ejs'); // //引入css、js app.use(express.static('public')); app.use(logger('dev')); app.use(require('cookie-parser')()); app.use(require('body-parser').urlencoded({ extended: true })); app.use(require('express-session')({ secret: 'keyboard cat', resave: false, saveUninitialized: false })); app.use(passport.initialize()); app.use(passport.session()); app.use('/', routes); app.use('/users', users); module.exports = app; |
修改路由文件routes/index.js
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
var express = require('express'); var router = express.Router(); var passport = require('passport'); router.get('/', function(req, res) { res.render('home', { user: req.user }); }); router.get('/login', function(req, res){ res.render('login'); }); router.post('/login', passport.authenticate('local', { failureRedirect: '/login' }), function(req, res) { res.redirect('/'); }); router.get('/logout', function(req, res){ req.logout(); res.redirect('/'); }); router.get('/profile', require('connect-ensure-login').ensureLoggedIn(), function(req, res){ res.render('profile', { user: req.user }); }); module.exports = router; |
新建文件mongodb/index.js
1 |
exports.users = require('./users'); |
新建文件mongodb/users.js
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
//连接数据库 var ObjectId = require('mongodb').ObjectID; var MongoClient = require('mongodb').MongoClient; var DB_CONN_STR = 'mongodb://localhost:27017/logdata'; MongoClient.connect(DB_CONN_STR, function(err, db) { exports.findById = function(id, cb) { process.nextTick(function() { var collection = db.collection('user'); var querystr = {"_id":ObjectId(id)}; collection.find(querystr).toArray(function(err, result) { console.log(11111111111111) if (result.length) { cb(null, result[0]); } else { cb(new Error('User ' + id + ' does not exist')); } return cb(null, null); }); }); }; exports.findByUsername = function(username, cb) { process.nextTick(function() { var collection = db.collection('user'); var querystr = {"username":username}; collection.find(querystr).toArray(function(err, result) { var record = result[0]; if (record.username === username) { return cb(null, record); } return cb(null, null); }); }); }; }); |