我是Perl的新手,我完全不知道如何处理这个问题。我们有一个旧的Perl应用程序,以前使用Apache auth;我们想用基于cookie的表单式身份验证替换它。我知道这是特定于案例的,并且没有一个答案,但一些一般的提示将非常感激。
我是否需要编辑网站中的所有.pl
个文件?或者我可以使用“金锤”解决方案吗?我可以使用CPAN上有什么东西吗?我们正在使用Perl v5.8.8,如果它很重要,我们正在使用Apache 2 共享托管。我很乐意在必要时提供更多信息。
答案 0 :(得分:1)
要识别/需要身份验证,需要通过最初接收用户请求的.pl
文件进行检查。因此,是否需要更改所有.pl
文件的答案取决于应用程序的结构:
如果用户前往http://myserver.com/one.pl做第一件事而http://myserver.com/two.pl做第二件事,那么,是的,你需要更改所有内容,因为他们都是单独接收请求。
如果用户首先访问http://myserver.com/dispatch.pl?mode=one而第二件事http://myserver.com/dispatch.pl?mode=two,dispatch.pl
则调用one.pl
或two.pl
基于mode
参数的场景,您只需要更改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);
答案 1 :(得分:0)
你可以在a level outside the Perl program处完成。
答案 2 :(得分:0)
感谢您的回答,但我最终决定CGI::Session::Auth::DBI在共享托管方面做得很好。