[Catalyst] Accessing arbitrary session data of a given ID - Store::DBI

Hector Azpurua h3ct0r.ml at gmail.com
Thu Nov 24 00:02:45 GMT 2016


Thanks Adam, I'll look into that!

2016-11-23 21:14 GMT-02:00 Adam Herzog <adam at adamherzog.com>:
> On Oct 23, 2016, at 14:55, Hector Azpurua <h3ct0r.ml at gmail.com> wrote:
>> Is there a recommended way to access or modify session data stored in
>> database with Store::DBI ?
>
> The session data is typically a hashref of data, serialized using Storable, and converted to Base64 for storage in the database. Look at the get_session_data() and store_session_data() in Catalyst::Plugin::Session::Store::DBI to see how the data is retrieved and stored: https://metacpan.org/source/Catalyst::Plugin::Session::Store::DBI#L24
>
> You can do the same thing. From code outside Catalyst you can use DBI or DBIx::Class or whatever to SELECT the data from the database, decode/thaw it, work with it however you'd like, then freeze/encode it and UPDATE the db record. You'll probably want to wrap that in a transaction.
>
> A separate problem is that the session data is keyed on the session id, not the username, so you won't be able to directly SELECT the session data for a particular username. You'd need to select and examine each session to find the username in $session_data->{'__user'}. Or maybe create a subclass of Catalyst::Plugin::Session::Store::DBI and store the username as a separate column in the sessions table. I have no idea how difficult that would be, but I bet it's manageable.
>
> -A
>
>
> _______________________________________________
> List: Catalyst at lists.scsys.co.uk
> Listinfo: http://lists.scsys.co.uk/cgi-bin/mailman/listinfo/catalyst
> Searchable archive: http://www.mail-archive.com/catalyst@lists.scsys.co.uk/
> Dev site: http://dev.catalyst.perl.org/



More information about the Catalyst mailing list