【问题标题】:How do I implement cookie based auth for a Perl website on shared hosting?如何在共享主机上为 Perl 网站实现基于 cookie 的身份验证?
【发布时间】:2011-01-03 06:46:36
【问题描述】:

我对 Perl 很陌生,我完全不知道如何处理这个问题。我们有一个以前使用 Apache auth 的旧 Perl 应用程序;我们想用基于 cookie 的表单式身份验证来替换它。我知道这是非常具体的案例,并且没有一个这样的答案,但一些一般性提示将不胜感激。

我需要编辑网站中的所有.pl 文件吗?或者有没有我可以使用的“金锤”解决方案? CPAN 有什么我可以使用的吗?如果重要的话,我们使用 Perl v5.8.8,并且我们使用 Apache 2 shared 托管。我很乐意提供必要的额外信息。

【问题讨论】:

  • 你使用 CGI.pm、CGI::Simple 还是使用一些框架?

标签: perl apache cookies authentication


【解决方案1】:

要识别/要求身份验证,需要通过最初接收用户请求的.pl 文件进行检查。因此,是否需要更改所有 .pl 文件的答案取决于您的应用程序的结构:

  • 如果用户去http://myserver.com/one.pl 做第一件事,http://myserver.com/two.pl 做第二件事,那么,是的,你需要全部更改它们,因为它们都单独接收请求。

  • 1234563那么你只需要更改dispatch.pl,因为它是唯一直接接收用户请求的。

编辑添加:如果您正在处理第一个模型,那么我强烈建议您使用 cookie 处理代码设置一个外部模块(.pm 文件)并调用它从您的每个 .pl 文件中提取,而不是在整个地方复制该代码。理想情况下,这将使您只需在每个 .pl 中添加几行代码即可:

use MyCookieHandlingModule qw(verify_cookie redirect_to_login);
my $q = CGI->new;  # ...unless you're already using CGI in object-oriented mode
redirect_to_login unless verify_cookie($q);

【讨论】:

    【解决方案2】:

    您可以通过a level outside the Perl program 进行操作。

    【讨论】:

    • 取决于主机提供多少控制权(以及他们愿意代表您做多少)
    【解决方案3】:

    感谢你们的回答,但我最终决定使用CGI::Session::Auth::DBI,它在共享主机上效果很好。

    【讨论】:

      猜你喜欢
      • 2011-11-23
      • 1970-01-01
      • 2019-10-31
      • 2019-12-20
      • 1970-01-01
      • 2020-10-08
      • 2011-10-10
      • 2016-07-27
      相关资源
      最近更新 更多