2011-06-28 4 views
1

В учебнике this он создает пользовательскую форму входа, чтобы показать, как это делается. Пожалуйста, найдитеКак удалить регистрационную форму из этого примера CGI :: Application?

Как удалить пользовательский логин и вернуться к умолчанию?

Для кода выглядит следующим образом

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; 
    } 
} 

Update

Здесь говорится, что CGI :: Application есть логин по умолчанию, который выглядит лучше, чем его.

Линия 159 определяет подпрограмму для использования формы для создания формы входа. Обратите внимание: плагин аутентификации поставляется с форматом , который вы можете использовать. Я - , в том числе и для демонстрации , как создать один из ваших , если вы действительно этого хотите. по умолчанию один выглядит намного лучше , чем у меня, поэтому вы можете пожелать комментарий out line 159!

+1

Err ... какой дефолт? Вы имеете в виду «Как я могу использовать HTTP-аутентификацию через CGI :: Application?» (HTTP Basic Auth is, IMNSHO, отвратительный и лучше всего избегаемый, есть причина, по которой вы почти никогда не видите его на WWW) – Quentin

+0

Вы прочитали учебник? Какой вход по умолчанию? «Готовый пример демонстрирует простую страницу входа в CGI. Аутентификация выполняется в отношении базы данных MySQL. Идентификатор сеанса хранится как файл cookie на стороне клиента (браузер). Публичные страницы могут видеть каждый, а частные страницы - Форма входа в систему использует SSL для обеспечения большей безопасности ». – Raoul

+0

Я обновил вопрос с цитатой здесь, он говорит, что CGI :: Приложение имеет форму входа по умолчанию, которая является той, которую я люблю использовать =) –

ответ

4

Я автор этого учебника. Извините за беспорядок! Что я должен сказал: «Прокомментируйте строки 157, 158 и 159 из Login.pm». Чтобы использовать форму по умолчанию, встроенную в модуль CGI :: Application :: Plugin :: Authentication, вам не нужно указывать LOGIN_RUNMODE, POST_LOGIN_RUNMODE или RENDER_LOGIN. Все они предназначены только для того, чтобы помочь вам настроить страницу входа. Я включил в учебник настроенную версию , полагая, что большинству людей нужно будет знать, как это сделать.

+0

Большое спасибо за учебник! У этого есть более полезный скелет для создания сложного веб-сайта, который я иначе не смог бы сделать из-за высокого барьера для входа. Если вы соберете отзывы, то было бы проще, если бы вы написали все объяснения в виде комментариев, а не указали на номера строк. Первое, что я подумал, это скопировать/вставить ваши объяснения в комментарии =) Из того, что я помню, скрипт для удаления номеров строк не работал. Либо он вообще не запускался, либо генерировал недопустимые файлы. Не помню, какой. Помимо этого, фантастическая работа! –

+0

КПП.Да, мне также нужно сделать свою собственную форму входа, но пока что пользовательский вариант прекрасен =) Так что спасибо за объяснение того, как создать пользовательский. –

+1

В сценарии была опечатка, чтобы удалить номера строк! Я исправил это - спасибо, что указал. – scorpio17

2

по умолчанию один на самом деле выглядит намного лучше, чем у меня, так что вы могли бы пожелать, чтобы закомментировать строки 159!

Закомментируйте линии 159.

+0

Когда я это делаю что я все еще получаю его регистрационную форму. Поэтому я подумал, что это имеет какое-то отношение к 'return $ self-> my_login_form;'? Изменив это, просто «return;» полностью удалит форму входа. –

Смежные вопросы