【问题标题】:How can I set and read session data in RingoJS?如何在 RingoJS 中设置和读取会话数据?
【发布时间】:2011-11-16 00:37:55
【问题描述】:

早安,

我最近开始与RingoJSStick middleware 一起玩,现在我被会话困住了。我不能让它工作。

ma​​in.js

var {Application} = require( "./_lib_/stick" ),
    app = exports.app = Application();

app.configure( "mount" );
app.mount( "/", require( "./actions" ) );

if ( require.main === module ) {
    require( "ringo/httpserver" ).main( module.directory );
}

actions.js

var {Application, helpers} = require( "./_lib_/stick" ),
    Response = require( "ringo/jsgi/response" );

export( "app" );

var app = Application();

app.configure( "route", "render", "session" );
app.render.base = module.resolve( "templates" );
app.render.master = "page.html";

app.get("/session.htm", function( request ) {
    //request.session.data.foo = "bar";
    request.session.data.put("foo", "bar");

    return Response.redirect( "session2.htm" );
});

app.get("/session2.htm", function( request ) {
    var value = request.session;

    return Response.html( "Session: " + value );
});

我测试了很多组合,但没有一个能像预期的那样工作。

我得到的大多数错误都是关于从会话中读取数据的。例如:

TypeError:无法从未定义中读取属性“数据”

有什么建议吗?

【问题讨论】:

    标签: rhino ringojs


    【解决方案1】:

    "session" 需要在 "mount" 之前出现在 app.configure 中。

    main.js第四行:

    app.configure( "session", "mount" );
    

    然后,从稍后对app.configure 的调用中删除"session",因为运行中间件两次是没有意义的。

    【讨论】:

    • 实际上,在挂载之前声明会话确实有效:app.configure( "session", "mount" );。更新您的答案,以便我接受。谢谢。
    • 糟糕,我没有注意到你已经把它放在那里了。这是有道理的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-06-09
    • 2010-10-17
    • 2020-03-25
    • 1970-01-01
    • 1970-01-01
    • 2018-10-15
    • 2016-09-14
    相关资源
    最近更新 更多