![](/img/trans.png)
[英]ExpressJS & Cookies - Cannot get express-cookie to Initialize a Cookie
[英]NodeJs and ExpressJs Cannot Set Cookie
您能帮我创建Cookie吗,因为我无法使其正常工作。 我想在用户登录后设置和创建cookie,但是我不知道我的代码有什么问题。 多谢你们。
这是我的代码,如果您认为还有其他错误或代码更正,可以帮我解决它吗? 多谢你们。 :)
app.js
//deps
var express = require('express');
var app = express();
var redis = require('redis');
var client = redis.createClient();
var delcookie = function(req, res) { res.clearCookie('login_token'); res.redirect('/'); };
var setcookie = function(req, res) { res.cookie('login_token', +new Date(), { maxAge: 3600000, path: '/' }); res.redirect('/'); };
//configs
app.use(express.bodyParser());
app.use(express.cookieParser());
app.use(app.router);
client.on('error', function (err) {
console.log('Error: ' + client.host + ':' + client.port + ' - ' + err);
});
app.get('/', function (req, res) {
res.sendfile(__dirname + '/index.html');
});
app.get('/login/', function (req, res) {
res.sendfile(__dirname + '/login.html');
});
app.get('/register/', function (req, res) {
res.sendfile(__dirname + '/register.html');
});
app.get('/restricted/', function (req, res) {
res.sendfile(__dirname + '/restricted.html');
});
app.get('/logout/', delcookie, function (req, res) {
res.sendfile(__dirname + '/logout.html');
});
//post
app.post('/login/', function (req, res) {
//res.sendfile(__dirname + '/restricted.html');
client.hmget( req.body.user.username, 'password', function (err,pass) {
if ( (!err) && pass && pass == req.body.user.password ){
res.redirect('/restricted/', setcookie);
} else if ( pass == false) {
res.redirect('/register/');
} else {
res.redirect('/login/');
}
});
});
app.post('/register/', function (req, res) {
client.hmset(req.body.user.username, 'password',req.body.user.password,
'fname',req.body.user.fname, 'lname', req.body.user.lname,
'password', req.body.user.password, 'email', req.body.user.email,
'mobile', req.body.user.mobile, redis.print);
res.write('Successfully Registered');
});
app.listen(80);
要使用cookie,您应该查看Express cookieSession
中间件。 这些文档在这里: http : //expressjs.com/api.html#cookieSession
更新 (我现在无法对其进行测试,因此这是我所记得的):
您可以添加cookieSession中间件,并使用以下方式指定cookie的设置:
app.use(express.cookieSession({
cookie: {
path: '/',
maxAge: 3600000
}
}));
然后,当用户登录时,您可以使用req.session.login_token = 'login_token';
在会话上设置登录令牌req.session.login_token = 'login_token';
。
当用户注销时,您可以通过执行req.session = null;
清除会话req.session = null;
。
然后,在身份验证中间件中,您可以检查是否在会话中设置了登录令牌,以查看用户是否已通过身份验证。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.