所以我使用nodejs和mongodb並嘗試在其中一個頁面上設置cookie。我不知道我在做什麼錯誤設置cookie?
在app.js文件,它使用此
var express = require('express')
, app = express()
, dbUserModel = require('./models/user')
, db = require('./db')
, pass = require('./config/passport')
, passport = require('passport')
, routes = require('./routes/index')
, user = require('./routes/user')
, path = require('path')
, http = require('http')
, connect = require('connect')
, mongoose = require('mongoose')
, mongoConnect = mongoose.connect('mongodb://localhost/test5');
// all environments
app.configure(function(){
app.set('port', process.env.PORT || 3000);
app.set('views', __dirname + '/views');
app.set('view engine', 'jade');
app.use(express.favicon());
app.use(express.logger('dev'));
app.use(express.bodyParser());
app.use(express.cookieParser('secret'));
///app.use(express.cookieSession());
app.use(express.methodOverride());
app.use(passport.initialize());
app.use(passport.session());
app.use(app.router);
app.use(express.static(path.join(__dirname, 'public')));
});
app.get('/', routes.index)
app.get('/register', user.register);
app.post('/register', user.registerPost);
app.get('/registerError', user.registerError);
app.get('/registerThanks', user.registerThanks);
app.get('/login', user.login);
app.post('/login', user.loginPost);
app.get('/loginError', user.loginError);
app.get('/userProfile', user.userProfile);
http.createServer(app).listen(app.get('port'), function(){
console.log('Express server listening on port ' + app.get('port'));
console.log('Users: ' + db.collections.users);
});
然後我打電話給我的路由文件是非常標準。
這是我的代碼:
exports.login = function(req, res) {
res.render('login', {user: req.user, title: 'Weblio'});
};
exports.loginPost = function(req, res, next) {
passport.authenticate('local', function(err, user, info) {
if (err) { return next(err) }
if (!user) { return res.redirect('loginError'); }
req.logIn(user, function(err) {
if (err) { return next(err); }
return res.redirect('userProfile');
});
})(req, res, next);
};
exports.loginError = function (req, res) {
res.render('loginError', {title: 'Weblio'});
};
exports.userProfile = function(req, res) {
res.render('userProfile', {user: req.user, title: 'Weblio'});
res.cookie('name', 'test', { maxAge: 900000, httpOnly: true });
};
當我去USERPROFILE頁面和我的document.cookie鍵入console它顯示一個空字符串作爲結果。
我也試過res.cookie移動到登錄後,它不能正常工作...
請幫幫忙!
該Cookie似乎仍留下一個空字符串,當我改變其位置之前渲染。 – Lion789
它應該工作 - 我猜你在困擾你的方式上還有別的東西。編輯你的問題,以刪除與其他路線unnevessary代碼,並顯示我的app.js文件,而不是... – gillyb
好吧,我更新了代碼。謝謝 – Lion789