【问题标题】:nodejs express req.session undefinednodejs express req.session 未定义
【发布时间】:2014-04-24 17:11:57
【问题描述】:

只是想不通这个。我发现的有关 express session 的所有内容都表明它几乎可以正常工作,但对我来说并非如此。

我的整个应用配置

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

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

和路线:

format = require './middlewares/format'
AuthenticationController = require './controller'

class Routes

  constructor: (app) ->
    throw new Error('app undefined') unless app
    @controller = new AuthenticationController
    @app = app
    route.apply @ for key, route of @routes

  routes:
    sign_up: ->
      @app.post '/sign_up', format.onlyJSON, @controller.signUp

module.exports = Routes

【问题讨论】:

  • 显示你正在使用的代码req?
  • 您在会话中间件之前有app.use app.router,因此您的所有路由都将在会话设置之前进行处理。你为什么要这样订购它们?
  • 并不认为这很重要,实际上......

标签: node.js session express undefined


【解决方案1】:

正如loganfsmyth 所建议的,只好搬家了

app.use express.cookieParser()
sessionStore = new express.session.MemoryStore
app.use express.session secret: 'key', store: sessionStore

app.use app.router 上方,它刚刚被点击。谢谢。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-04-12
    • 2015-10-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-11
    • 2012-12-09
    • 2017-11-16
    相关资源
    最近更新 更多