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

perl – 如何堆叠Plack身份验证处理程序?

发布时间:2020-12-16 06:25:50 所属栏目:大数据 来源:网络整理
导读:我想让我的Plack应用程序尝试几种不同的授权用户的方法.具体来说,检查用户是否已通过会话cookie授权,然后检查摘要式身份验证,然后回退到Basic. 我想我可以按照我希望它们被检查的顺序启用一堆Auth处理程序(Session,Digest,Basic).不幸的是,编写Plack::Middle
我想让我的Plack应用程序尝试几种不同的授权用户的方法.具体来说,检查用户是否已通过会话cookie授权,然后检查摘要式身份验证,然后回退到Basic.

我想我可以按照我希望它们被检查的顺序启用一堆Auth处理程序(Session,Digest,Basic).不幸的是,编写Plack::Middleware::Auth::Digest和Plack::Middleware::Auth::Basic的方式,如果不存在摘要或基本身份验证,则它们都返回401.

这通常如何处理普拉克?

解决方法

我没有实现,但我认为我有这种方法.您可以使用 Plack::Middleware::Conditional“在线”执行此操作.因此它看起来像这样,但您必须填写缺少的条件/测试.我没有看到一个简单/明显的方式,但我怀疑你可能.由于你有$env传递,你应该能够按照你想要的顺序设置/检查HTTP_ /会话内容,并保持下一个处理程序的状态,知道是否应该启用它.

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;
};

(编辑:李大同)

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

    推荐文章
      热点阅读