【发布时间】:2014-09-15 20:10:14
【问题描述】:
关于这个话题有很多问题,但没有一个可以解决我的问题, 我开发了一个快速应用程序,我的身份验证方法是写入会话对象并使用 redis-store 。它在开发过程中运行良好,
但我第一次部署我的站点进行一些测试(使用模数)时,我收到一个错误,即 req.session 未定义。当我在 localhost 上运行它时,代码仍然可以正常工作。
这实际上是我的第一个网络项目,其中有很多我不知道的明显要点和技巧,必须通过这种方式学习。也许我在这里遗漏了一些简单而明显的东西,不知道!
package.josn 依赖:
"dependencies" : {
"express" : "~3.4.4",
"mongoose" : "~3.6.2",
"socket.io":"1.x" ,
"bcrypt-nodejs" : "0.0.3",
"connect-redis": "1.4.x" ,
"body-parser" : "1.4.3" ,
"cookie-parser": "~1.0.0",
"express-session": "~1.0.0"
} ,
应用配置
var express = require('express') ;
var app = express() ;
var http = require('http') ;
var io = require('socket.io') ;
var bodyParser = require('body-parser');
var mongoose = require('mongoose') ;
var mongoose1 = require('mongoose') ;
var bcrypt = require('bcrypt-nodejs') ;
var PORT = process.env.PORT || 8080 ;
var server = http.createServer(app) ;
var RedisStore = require('connect-redis')(express);
app.configure(function () {
app.use(express.static(__dirname + "/static" )) ;
app.use( express.cookieParser() );
app.use(express.bodyParser()) ;
app.use(express.session({
store: new RedisStore({
host: 'localhost',
port: 6379,
db: 2,
pass: '****'
}),
secret: '12345qwr'
})
);
}) ;
当我在我的服务器中到达 req.session.[] 时,应用程序崩溃并重新启动,因为 req.session 在 undefined 中。 例如,当我单击登录按钮并将发布请求发送到“/api/login”或..
app.post('/api/login' , function (req, res) {
UserDBModel.findOne({ username : req.body.user } , function (err, user) {
if (err) { res.json(err) ; }
if ( user ) {
if ( bcrypt.compareSync( req.body.pass , user.password ) ) {
req.session.Auth = { username : user.username , password : user.password } ;
//app crashes here with error : TypeError: Cannot set property 'Auth' of undefined
}) ;
ps。为了进行身份验证,我在我的会话中存储了一个“Auth”对象,其中包含登录用户的用户名和哈希密码。
【问题讨论】: