gpt4 book ai didi

perl - 您如何将 Plack::Middleware::Session 与 Twiggy 服务器一起使用?

转载 作者:行者123 更新时间:2023-12-05 01:02:31 26 4
gpt4 key购买 nike

我有一个 Twiggy 基于 perl 服务器:

my $app = sub { my $req = Plack::Request->new(shift); ... };
my $twiggy = Twiggy::Server->new(port => $port);
$twiggy->register_service($app);
它工作正常,但现在我想向它添加 session 管理(以处理用户身份验证)。我看到有一个 Plack::Middleware::Session CPAN 上的模块,但基于它和 Twiggy 的文档,我不知道如何将两者一起使用。我有理由相信这是可能的,因为在我的 $app 中我正在处理 Plack 的东西。
或者使用 Plack::Middleware::Session ,是否有其他方法可以轻松获取和设置 cookie 值并维护 session 状态以进行身份​​验证? (用户请求的每个页面加载都在服务器的新分支中处理。)

最佳答案

你可以把它串起来。 builder Plack::Builder 的功能会将您的应用程序包装在一个中间件(或多个)中。然后你只需将它作为一个新应用程序传递给 Twiggy。

use Plack::Builder;
use Twiggy::Server;

my $app = sub {
my $env = shift;
my $req = Plack::Request->new($env);
my $session = $env->{'psgix.session'};
return [
200,
[ 'Content-Type' => 'text/plain' ],
[ "Hello, you've been here for ", $session->{counter}++, "th time!" ],
];
};

$app = builder {
enable 'Session', store => 'File';
$app;
};

my $twiggy = Twiggy::Server->new(port => 3000);
$twiggy->register_service($app);

AE::cv->recv;

请注意 builder将返回一个新应用程序,但它不会以 $app 结束除非你分配它。你也可以把 builder进入 register_service像这样:
my $twiggy = Twiggy::Server->new(port => 3000);
$twiggy->register_service(builder {
enable 'Session', store => 'File';
$app;
});

或者当然你可以去掉 Twiggy::Server 并运行 twiggy命令行工具或 plackup用 Twig 。

关于perl - 您如何将 Plack::Middleware::Session 与 Twiggy 服务器一起使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26138935/

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