【发布时间】:2015-07-22 15:08:26
【问题描述】:
我需要将我们的 perl 应用程序移动到新服务器,但我不希望每个人都必须在移动时重新进行身份验证。我想让我们的“主页”脚本重定向到新服务器,预先植入一个 cookie,并在 /tmp 中为每个用户提供相应的会话文件,然后再进行 DNS 更改。
以为会很简单,但事实并非如此。或者我只是在我面前错过了一些东西。
这是我在当前服务器上的“主页”脚本中放入的代码..
my $has_session = $cgi->param("session") || "";
if ($has_session eq "") {
my $url = "http://111.222.333.444/cgi-bin/SetNewSession.cgi?back=http://" . "$ENV{SERVER_NAME}" ."$ENV{SCRIPT_NAME}";
print "Location: $url\n\n";
}
这是新服务器上脚本中的代码...
use strict;
use warnings;
use CGI;
use CGI::Session;
use CGI::Carp qw/fatalsToBrowser warningsToBrowser/;
my $cgi = new CGI;
my $userid = $cgi->param("userid");
my $redir_back = $cgi->param("back");
my $session = CGI::Session->load() or die $!;
my $session_userid = $session->param("userid");
if (! defined $session_userid) {
$session->expire("9y");
$session->param("userid",$userid);
$session->flush();
}
my $url = $redir_back . "?session=1";
print $session->header(-location=>$url);
exit;
没有 cookie。没有会话文件。什么都没有。
附:请不要因为 9 年到期而受到抨击。管理“高于”必须登录。 :)
【问题讨论】:
-
您使用的是哪个会话存储驱动程序?