加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

perl – 你如何使用Twiggy服务器使用Plack :: Middleware :: Ses

发布时间:2020-12-16 06:20:53 所属栏目:大数据 来源:网络整理
导读:我有一个基于 Twiggy 的perl服务器: my $app = sub { my $req = Plack::Request-new(shift); ... };my $twiggy = Twiggy::Server-new(port = $port);$twiggy-register_service($app); 它工作正常,但现在我想添加会话管理(处理用户身份验证).我看到CPAN上有
我有一个基于 Twiggy的perl服务器:

my $app = sub { my $req = Plack::Request->new(shift); ... };
my $twiggy = Twiggy::Server->new(port => $port);
$twiggy->register_service($app);

它工作正常,但现在我想添加会话管理(处理用户身份验证).我看到CPAN上有一个Plack::Middleware::Session模块,但基于它的文档和Twiggy我不知道如何将两者结合使用.我有理由相信这可能是因为在我的$app我正在处理Plack的东西.

或者使用Plack :: Middleware :: Session,还有其他方法可以轻松获取和设置cookie值并维护会话状态以进行身份??验证吗? (用户请求的每个页面加载都在服务器的新分支中处理.)

解决方法

你可以将它串在一起. 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;

请注意,构建器将返回一个新的应用程序,但除非您指定它,否则它不会以$app结尾.您也可以将构建器放入register_service,如下所示:

my $twiggy = Twiggy::Server->new(port => 3000);
$twiggy->register_service(builder {
    enable 'Session',store => 'File';
    $app;
});

或者你当然可以摆脱Twiggy :: Server并使用twiggy运行twiggy命令行工具或plackup.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读