2016-07-07 43 views
0

我正在使用Catalyst::Plugin::Session以及Catalyst::Plugin::Session::Store::DBICCatalystX::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" 

,這裏是崩潰:

http://pastebin.com/nWA0X6Lb

我檢查並且調用delete_session_data的函數是Catalyst::Plugin::Session::change_session_id

此外,當我使用Catalyst::Plugin::Session::Store::File而不是Catalyst :: Plugin :: Session :: Store :: DBIC時,此工作正常。

有誰知道會出現什麼問題?

UPDATE:

我查了我的作品的其他服務器之一,它看起來像某種原因刪除查詢是不是有:

INSERT INTO sessions (id) VALUES (?): 'session:08844c28572b99acd3603d50c2c3975d13c3a4b8' 

UPDATE sessions SET expires = ?, session_data = ? WHERE (id = ?): '1467956394', 'BQcDAAAABgp5TW96aWxsYS81LjAgKE1hY2ludG9zaDsgSW50ZWwgTWFjIE9TIFggMTBfMTFfNCkgQXBwbGVXZWJLaXQvNTM3LjM2IChLSFRNTCwgbGlrZSBHZWNrbykgQ2hyb21lLzUxLjAuMjcwNC4xMDMgU2FmYXJpLzUzNy4zNgAAAAxfX3VzZXJfYWdlbnQKBXVzZXJzAAAADF9fdXNlcl9yZWFsbQoONTAuMTc0LjI0Mi4yNTMAAAAJX19hZGRyZXNzBAMAAAABCgExAAAAAmlkAAAABl9fdXNlcgoKMTQ2Nzg2OTk5NAAAAAlfX2NyZWF0ZWQKCjE0Njc4Njk5OTQAAAAJX191cGRhdGVk', 'session:08844c28572b99acd3603d50c2c3975d13c3a4b8' 

進一步更新:

我使用的是perl 5.24。我認爲這可能是相關的。我將嘗試下載一個較舊的perl版本並查看是否可行。

回答

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版本。