我正在尝试在我的快递应用程序中使用redis进行会话.
我做以下事情:
var express = require('express');
var RedisStore = require('connect-redis')(express);
app.configure('development', function(){
app.use(express.session({ secret: "password",
store: new RedisStore({
host: "127.0.0.1",
port: "6379",
db: "mydb"
})
}));
Run Code Online (Sandbox Code Playgroud)
稍后,在我的应用程序中,如果我执行以下操作:
var whatever = req.session.someProperty;
Run Code Online (Sandbox Code Playgroud)
我明白了:
无法读取未定义的属性'someProperty'
这表明req.session是未定义的 (我可以在我的配置部分的console.log条目中看到这一点)
我肯定有redis运行,并且可以看到我的应用程序最初连接到它(使用redis-cli监视器)
我刚刚开始学习如何在节点和表达中使用cookie,我希望得到一些帮助,让它工作.我试着在GitHub上关注expressjs/session教程,但是我得到req.session了undefined,所以我无法设置或获取任何值.
我的目标是将用户的名字和姓氏保存到cookie中,以便自动填充输入字段.我不确定我是否需要使用cookie-parser,或者是否express-session可以单独处理.我不确定如何继续,因为我不熟悉cookie和快速会话.
所有帮助表示赞赏!提前致谢.
码
let express = require('express');
let app = express();
let credentials = require('../modules/credentials.js');
let session = require('express-session');
let sessionOptions = {
secret: credentials.cookieSecret,
cookie: {
maxAge:269999999999
},
saveUninitialized: true,
resave:true
};
if (app.get('env') === 'production') {
app.set('trust proxy', 1);
sessionOptions.cookie.secure = true;
}
else {
sessionOptions.cookie.secure = false;
}
app.use(session(sessionOptions));
let router = express.Router();
app.use(router);
let request = require('request');
let db = require('../modules/queries');
let bodyParser = require('body-parser'); …Run Code Online (Sandbox Code Playgroud) 只是想不出来这个.我发现关于快递会议的一切都说得很有效,然而,对我来说并非如此.
我的整个应用配置
app.configure ->
app.set 'port', process.env.PORT || 3000
app.set 'views', path.join(__dirname, 'views')
app.set 'view engine', 'jade'
app.use express.favicon()
app.use express.logger('dev')
app.use express.json()
app.use express.urlencoded()
app.use express.methodOverride()
app.use app.router
app.use express.static(path.join(__dirname, 'public'))
app.use express.bodyParser()
app.use express.cookieParser()
sessionStore = new express.session.MemoryStore
app.use express.session secret: 'key', store: sessionStore
Run Code Online (Sandbox Code Playgroud)
但这req.session只是undefined.我想用它来进行用户身份验证 - 非常基本.出于某种原因,事实证明对我来说非常艰难.
我在用express 3.5.0.
我的控制器atm看起来像这样:
class AuthenticationController
signUp: (req, res) ->
console.log req.body._id
console.log req.session
res.status(200).send req.body
module.exports = AuthenticationController
Run Code Online (Sandbox Code Playgroud)
和路线:
format = require './middlewares/format'
AuthenticationController = …Run Code Online (Sandbox Code Playgroud) 我正在开发一个简单的登录系统,但似乎没有保存会话
我已经制作了一个简单的测试代码,谁能告诉我它有什么问题?我正在运行登录,之后我正在运行is_logged但是我从未登录,并且两个会话都是未定义的
var port = process.env.PORT || 8080;
var express = require('express');
var app = express();
var cookieParser = require('cookie-parser');
var session = require('express-session');
app.use(cookieParser());
app.use(session({
secret: "fd34s@!@dfa453f3DF#$D&W",
resave: false,
saveUninitialized: true,
cookie: { secure: true }
}));
app.post('/test_login', function(req, res){
req.session.users_schema = 1;
req.session.user_doc = 2;
res.json({"first": req.session.users_schema, "second": req.session.user_doc});
});
app.post('/test_is_loggin', function(req, res){
if( !req.session.users_schema || !req.session.user_doc ) {
console.log("no");
res.json({"first": 1, "second": 1});
}
else {
console.log("no2");
res.json({"first": req.session.users_schema, "second": req.session.user_doc});
}
});
app.listen(port);
console.log('Listening on port …Run Code Online (Sandbox Code Playgroud)