我正在使用Catalyst::Plugin::Session以及Catalyst::Plugin::Session::Store::DBIC和CatalystX::SimpleLogin。我以前曾多次使用过这些,但我现在有些奇怪的行为。我所看到的是,一旦我登录会话被创建,然后被删除,然后尝试更新不存在的会话行,这会导致崩溃。以下是正在运行的查询:
INSERT INTO sessions ( id) VALUES ( ? ): 'session:ff4732c1779d955a73d31b967db50ba59d3c0573'
DELETE FROM sessions WHERE ( id = ? ): 'session:ff4732c1779d955a73d31b967db50ba59d3c0573'
DELETE FROM sessions WHERE ( id = ? ): 'flash:ff4732c1779d955a73d31b967db50ba59d3c0573'
UPDATE sessions SET expires = ?, session_data = ? WHERE ( id = ? ): '1467954773', 'BQoDAAAABQp5TW96aWxsYS81LjAgKE1hY2ludG9zaDsgSW50ZWwgTWFjIE9TIFggMTBfMTFfNCkgQXBwbGVXZWJLaXQvNTM3LjM2IChLSFRNTCwgbGlrZSBHZWNrbykgQ2hyb21lLzUxLjAuMjcwNC4xMDMgU2FmYXJpLzUzNy4zNgAAAAxfX3VzZXJfYWdlbnQJV33k1QAAAAlfX2NyZWF0ZWQJV33k1QAAAAlfX3VwZGF0ZWQKBXVzZXJzAAAADF9fdXNlcl9yZWFsbQQDAAAAAQiBAAAAAmlkAAAABl9fdXNlcg==', 'session:ff4732c1779d955a73d31b967db50ba59d3c0573'
这是我看到的调试输出:
[debug] Created session "ff4732c1779d955a73d31b967db50ba59d3c0573"
[debug] Created session "aec058e68a823f5711d64b18ad8c53611b1b832f"
[debug] change_sessid: deleting session data from "ff4732c1779d955a73d31b967db50ba59d3c0573"
[debug] change_sessid: storing session data to "aec058e68a823f5711d64b18ad8c53611b1b832f"
这是崩溃:
我检查过,调用delete_session_data
的函数是Catalyst::Plugin::Session::change_session_id
。
此外,当我使用Catalyst::Plugin::Session::Store::File而不是Catalyst :: Plugin :: Session :: Store :: DBIC时,这也适用。
有谁知道会出现什么问题?
更新:
我检查了其他一个有效的服务器,看起来由于某种原因删除查询不存在:
INSERT INTO sessions ( id) VALUES ( ? ): 'session:08844c28572b99acd3603d50c2c3975d13c3a4b8'
UPDATE sessions SET expires = ?, session_data = ? WHERE ( id = ? ): '1467956394', 'BQcDAAAABgp5TW96aWxsYS81LjAgKE1hY2ludG9zaDsgSW50ZWwgTWFjIE9TIFggMTBfMTFfNCkgQXBwbGVXZWJLaXQvNTM3LjM2IChLSFRNTCwgbGlrZSBHZWNrbykgQ2hyb21lLzUxLjAuMjcwNC4xMDMgU2FmYXJpLzUzNy4zNgAAAAxfX3VzZXJfYWdlbnQKBXVzZXJzAAAADF9fdXNlcl9yZWFsbQoONTAuMTc0LjI0Mi4yNTMAAAAJX19hZGRyZXNzBAMAAAABCgExAAAAAmlkAAAABl9fdXNlcgoKMTQ2Nzg2OTk5NAAAAAlfX2NyZWF0ZWQKCjE0Njc4Njk5OTQAAAAJX191cGRhdGVk', 'session:08844c28572b99acd3603d50c2c3975d13c3a4b8'
进一步更新:
我正在使用perl 5.24。我认为这可能是相关的。我将尝试下载较旧的perl版本并查看是否有效。
答案 0 :(得分:0)
所以我相信我发现了这个问题。我认为v 0.19中引入了一个错误。我找到的修复程序是在登录控制器中注释掉这一行:
if( $form->process(ctx => $ctx, params => $p) ) {
#$ctx->change_session_id;
$self->remember_me($ctx, $form->field( 'remember' )->value);
$self->do_post_login_redirect($ctx);
}
现在我要降级到版本0.18。