【问题标题】:Sessions in Zappa (node.js)Zappa 中的会话 (node.js)
【发布时间】:2012-02-29 05:16:33
【问题描述】:

使用 Zappa 启用会话的正确方法是什么?

Zappa Crash Course 暗示我只需要 @use 'cookies', session: {secret: 'asdf'} 但这不是导出 @request.session -- 我错过了什么吗?我在下面对 console.log 的调用导致 undefined 被打印出来。

require('zappa') '0.0.0.0', '8080', ->

  @use 'bodyParser',
       'methodOverride',
       @app.router,
       'static',
       'cookies',
       'cookieParser',
       session: {secret: '5465hfgh3t4grf'}

  @configure
    development: => @use errorHandler: {dumpExceptions: on}
    production: => @use 'errorHandler'

  @get '/': -> 
    console.log( @request.session )
    @render 'index.eco', {loginkey: @request.sessionID}

【问题讨论】:

    标签: session node.js express zappa


    【解决方案1】:

    你需要在你的路由上方有 session 中间件:

    require('zappa') '0.0.0.0', '8080', ->
    
      @use 'bodyParser',
           'methodOverride',
           'cookies',
           'cookieParser',
           session: {secret: '5465hfgh3t4grf'},
           @app.router,
           'static'
    
      @configure
        development: => @use errorHandler: {dumpExceptions: on}
        production: => @use 'errorHandler'
    
      @get '/': -> 
        console.log( @request.session )
        @render 'index.eco', {loginkey: @request.sessionID}
    

    否则,在您的路线执行之前,您的请求中不会有session,可以这么说......

    更新:另外请注意,与 zappa 中 request 上的其他属性一样,session 被复制到 this,因此您可以直接访问 @session。在request 上也没有sessionId,但是有一个@session.id,你可能想要下面的路线:

    @get '/': -> 
      console.log( @session )
      @render 'index.eco', {loginkey: @session.id}
    

    【讨论】:

      猜你喜欢
      • 2014-01-10
      • 1970-01-01
      • 2013-11-18
      • 2012-02-08
      • 2012-01-27
      • 1970-01-01
      • 2013-04-16
      • 2012-03-08
      • 2012-02-09
      相关资源
      最近更新 更多