2016-07-07 3 views
0

Ich verwende Catalyst::Plugin::Session zusammen mit Catalyst::Plugin::Session::Store::DBIC und CatalystX::SimpleLogin. Ich habe diese schon mehrmals benutzt, aber ich bekomme momentan ein seltsames Verhalten. Was ich sehe ist, dass, sobald ich mich anmelde die Sitzung erstellt wird, dann gelöscht wird, und dann gibt es einen Versuch, die Sitzungszeile zu aktualisieren, die nicht existiert, und dies verursacht einen Absturz. Hier sind die Abfragen, die ausgeführt werden:Catalyst Plugin Sitzung Sitzung löschen, bevor es verwendet wird

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' 

Hier ist die Debug-Ausgabe ich sehen bin:

[debug] Created session "ff4732c1779d955a73d31b967db50ba59d3c0573" 

[debug] Created session "aec058e68a823f5711d64b18ad8c53611b1b832f" 

[debug] change_sessid: deleting session data from "ff4732c1779d955a73d31b967db50ba59d3c0573" 

[debug] change_sessid: storing session data to "aec058e68a823f5711d64b18ad8c53611b1b832f" 

Und hier ist der Absturz:

http://pastebin.com/nWA0X6Lb

Ich überprüfte und die Funktion, die delete_session_data aufruft, ist Catalyst::Plugin::Session::change_session_id.

Auch das funktioniert, wenn ich Catalyst::Plugin::Session::Store::File anstelle von Catalyst :: Plugin :: Session :: Store :: DBIC verwenden.

Weiß jemand, was könnte schief gehen?

UPDATE:

ich auf einem meiner anderen Server überprüft, das funktioniert, und es sieht aus wie aus irgendeinem Grund die Löschabfragen sind nicht da:

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

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

Weitere Update:

Ich benutze Perl 5.24. Ich dachte, das könnte relevant sein. Ich werde versuchen, eine ältere Perl-Version herunterzuladen und zu sehen, ob das funktioniert.

Antwort

0

Also ich glaube, ich habe das Problem gefunden. Ich denke, dass ein Fehler in v 0.19 eingeführt wurde. Das Update Ich fand kommentierte Setzen Sie diese Zeile im Login-Controller:

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); 
} 

Denn jetzt bin ich nur auf 0,18 Version gehen degradieren.