gpt4 book ai didi

perl - Mojolicious 自定义 session

转载 作者:行者123 更新时间:2023-12-04 22:35:07 29 4
gpt4 key购买 nike

我正在尝试使用 Mojolicious 的数据库 session ,而不是使用签名 cookie 的内置 session 。

startup 子程序中,我有类似的内容:

my $dbh = DBI->connect(                                                                                                                                  
$config->{database}->{dsn},
$config->{database}->{user},
$config->{database}->{password},
);

my $session = MojoX::Session->new(
store => [dbi => {dbh => $dbh}], # use MojoX::Session::Store::Dbi
transport => 'cookie', # this is by default
ip_match => 1
);

(ref($self))->attr( 'session' => sub {
return $session;
} );

我想在 Controller 中使用像 $self->session$self->app->session 这样的 session 对象。

不幸的是它不起作用 - 它使用以前的 session (来自不同的浏览器)。

这让我发疯 - 我今天尝试的所有内容都是为了完成这项工作 - 我已经阅读了所有可用的文档,还有 MojoX::Session 及其所有相关类的来源,尝试了大约 923847293847239847 种方法来使其工作,但似乎没有任何作用它。

PS:我在数据库中创建了 session 表。

你知道我应该怎么做才能使用 Mojolicious 的数据库 session 吗?

最佳答案

您可以将 MojoX::Session 作为 startup 函数中的插件连接到应用程序。

use Mojolicious::Plugin::Session;

[...]

sub startup {
my $self = shift;

[...]

$self->plugin( session => {
stash_key => 'mojox-session',
store => [dbi => {dbh => $dbh}], # use MojoX::Session::Store::Dbi
transport => 'cookie',
ip_match => 1
});

[...]

之后,您将可以通过 Controller 中的存储 key “ mojox-session”访问 session 。

例如:
$self->stash('mojox-session')->data('something');

关于perl - Mojolicious 自定义 session ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8743822/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com