在this教程中,他创建了一个自定义登录表单,以显示它是如何完成的。请搜索
如何删除自定义登录并退回默认设置?
代码看起来像这样
sub cgiapp_init {
my $self = shift;
my %CFG = $self->cfg;
# ...
$self->authen->config(
DRIVER => [ 'Authen::Simple::LDAP',
host => '',
basedn => '',
],
STORE => 'Session',
LOGOUT_RUNMODE => 'logout',
LOGIN_RUNMODE => 'login',
POST_LOGIN_RUNMODE => 'okay',
RENDER_LOGIN => \&my_login_form,
);
$self->authen->protected_runmodes(
'mustlogin',
);
}
sub login : Runmode {
my $self = shift;
my $url = $self->query->url;
my $user = $self->authen->username;
if ($user) {
my $message = "User $user is already logged in!";
my $template = $self->load_tmpl('default.html');
$template->param(MESSAGE => $message);
$template->param(MYURL => $url);
return $template->output;
} else {
my $url = $self->query->self_url;
unless ($url =~ /^https/) {
$url =~ s/^http/https/;
return $self->redirect($url);
}
return $self->my_login_form;
}
}
更新
这里提到CGI :: Application有一个看起来比他好的默认登录。
第159行指定要使用的子例程 生成登录表单。注意 身份验证插件附带一个 您可以使用的默认表单。我 包括这个只是为了证明 如何创建你的一个 拥有,万一你真的想。该 默认一个看起来好多了 比我的,所以你可能希望 评论第159行!
答案 0 :(得分:4)
我是该教程的作者。对困惑感到抱歉! 我应该所说的是“注释掉Login.pm的第157,158和159行”。 要使用内置于CGI :: Application :: Plugin :: Authentication模块的默认表单,您不需要指定LOGIN_RUNMODE,POST_LOGIN_RUNMODE或RENDER_LOGIN。 这些都是为了帮助您自定义登录页面。我包括一个定制的 教程中的版本认为大多数人都需要知道如何操作。
答案 1 :(得分:2)
默认值实际上看起来比我的要好得多,所以你可能希望注释掉第159行!
评论第159行。