我没有一个实现,但我认为我有办法。您可以使用Plack::Middleware::Conditional“在线”进行此操作。所以它看起来像这样,但你必须填写缺失的条件/测试。我没有看到一个简单/明显的方式,但我怀疑你可能会。既然你有$env
来传递,你应该能够按照你想要的顺序设置/检查HTTP_/session的东西,并且保持下一个处理器的状态以知道它是否应该被启用。
use Plack::Builder;
my $app = sub {
[ 200,
[ "Content-Type" => "text/plain" ],
[ "O HAI, PLAK!" ]
];
};
builder {
enable "Session::Cookie";
enable_if { my $env = shift;
# I don't know...
} "Auth::Digest",
realm => "Secured", secret => "BlahBlah",
authenticator => sub { $_[0] eq $_[1] };
enable_if { my $env = shift;
# I don't know...
} "Auth::Basic",
authenticator => sub { $_[0] eq $_[1] };
$app;
};
没有答案给你,但不是404是完全错误的吗? – ysth 2011-01-11 04:25:43