如何从此CGI :: Application示例中删除登录表单?

时间:2011-06-28 14:25:46

标签: perl cgi-application

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行!

2 个答案:

答案 0 :(得分:4)

我是该教程的作者。对困惑感到抱歉! 我应该所说的是“注释掉Login.pm的第157,158和159行”。 要使用内置于CGI :: Application :: Plugin :: Authentication模块的默认表单,您不需要指定LOGIN_RUNMODE,POST_LOGIN_RUNMODE或RENDER_LOGIN。 这些都是为了帮助您自定义登录页面。我包括一个定制的 教程中的版本认为大多数人都需要知道如何操作。

答案 1 :(得分:2)

  

默认值实际上看起来比我的要好得多,所以你可能希望注释掉第159行!

评论第159行。