Perl 如何在会话中间件中使用Plack身份验证?
我有自己编写的中间件,称为身份验证和会话,其中身份验证中间件生成会话密钥,并在成功身份验证后将会话信息保存在cookie中 现在,会话中间件使用上述cookie提取会话信息并实现会话管理 但不知何故,我无法序列化上述中间件,以便在会话中间件中获取由身份验证中间件创建的cookie 我试着如下所示构建它们-Perl 如何在会话中间件中使用Plack身份验证?,perl,session,cookies,plack,starman,Perl,Session,Cookies,Plack,Starman,我有自己编写的中间件,称为身份验证和会话,其中身份验证中间件生成会话密钥,并在成功身份验证后将会话信息保存在cookie中 现在,会话中间件使用上述cookie提取会话信息并实现会话管理 但不知何故,我无法序列化上述中间件,以便在会话中间件中获取由身份验证中间件创建的cookie 我试着如下所示构建它们- my $app = builder { mount "/login" => builder { enable "+X::Middleware::Authentica
my $app = builder {
mount "/login" => builder {
enable "+X::Middleware::Authentication"; #This should be called first
enable "+X::Middleware::Session";
};
};
认证中间件简单地将用户验证到某个数据库,成功后生成会话密钥并保存在cookie中
会话中间件如下所示-
package X::Middleware::Session;
use Plack::Session::State;
use parent qw(Plack::Middleware);
use warnings;
use strict;
use Moose;
use Data::Dumper;
sub call {
my $self = shift;
my($env) = @_;
# Expecting the cookie information in $env, but its not there
my $request = Plack::Request->new($env);
my $session = $request->session;
$session->{user} = "some";
$env->{'psgix.session.options'}{change_id} = 1;
$env->{'psgix.session.options'}{expires} = 120;
my $response = Plack::Response->new();
print "Welcome to X::Middleware::Session Middleware\n\n\n";
print "X::Middleware::Session::ENV - " . Dumper($env) . "\n";
$response->status(200);
return $response->finalize;
}
1;
我调用中间件时有什么问题吗?我已经得到了这个问题的答案,因为我想通过身份验证中间件返回%env散列,然后该中间件将修改/访问此散列以及对应用程序的响应。