• Publicidad

Ejecutar un programa antes que otro

¿Apenas comienzas con Perl? En este foro podrás encontrar y hacer preguntas básicas de Perl con respuestas aptas a tu nivel.

Re: Ejecutar un programa antes que otro

Notapor explorer » 2011-02-28 16:59 @749

El hash %Config es pasado al módulo CGI::Application::Plugin::Authentication. Allí está explicado como funciona el tema de la autenticación con ese módulo. Se deben decidir dos cosas: qué controlador es el que se usará para autenticar al usuario (por ejemplo, en una base de datos como CGI::Application::Plugin::Authentication::Driver::DBI) y en qué almacén se debe guardar la información para saber que el usuario con el que estamos dialogando ya está autenticado.

Como pone en la documentación, lo normal es usar CGI::Application::Plugin::Session (usando STORE => 'Session').
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14486
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Publicidad

Re: Ejecutar un programa antes que otro

Notapor noa86 » 2011-02-28 17:12 @758

Y ¿qué quiere decir realmente STORE->'Session'? Porque eso no lo comprendo...
noa86
Perlero nuevo
Perlero nuevo
 
Mensajes: 93
Registrado: 2010-11-15 14:43 @655

Re: Ejecutar un programa antes que otro

Notapor explorer » 2011-03-01 08:10 @382

Lo dice la página de CGI::Application::Plugin::Authentication... con eso estás indicando que quieres usar CGI::Application::Plugin::Session como almacén de sesiones de usuario.

Ya te he advertido que el asunto no es sencillo... hay que leer y probar muchas cosas para llegar a entender todo esto... por algo se llama framework.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14486
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Re: Ejecutar un programa antes que otro

Notapor noa86 » 2011-03-01 12:34 @565

Después de volver a leerme los manuales de los módulos que necesito, me he puesto a modificar el ejemplo anterior, para configurarlo con una base de datos... Me da un error, y no sé qué significa, que estoy poniendo mal.

Si alguien me puede ayudar una vez más, gracias...
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. #!/usr/bin/perl
  2.  
  3. #
  4. # Sample application
  5. #
  6. # Just place this file in a CGI enabled part of your website, and
  7. # load it up in your browser.  The only valid username/password
  8. # combination is 'test' and '123'.
  9. #
  10.  
  11. use strict;
  12. use warnings;
  13.  
  14. {
  15.  
  16.     package SampleLogin;
  17.  
  18.     use base qw(CGI::Application);
  19.  
  20.     use CGI::Application::Plugin::Session;
  21.     use CGI::Application::Plugin::Authentication;
  22.     use CGI::Application::Plugin::AutoRunmode;
  23.     use CGI::Application::Plugin::DBH (qw/dbh_config dbh/);
  24.     use CGI::Carp qw(fatalsToBrowser);
  25.  
  26.  
  27.  
  28.     SampleLogin->dbh_config("dbi:mysql:database=GESTION_USUARIOS:host=localhost", "admin", "123");
  29.        
  30.         SampleLogin->session_config(
  31.                 CGI_SESSION_OPTIONS => [
  32.                         "driver:mysql;serializer:Storable",
  33.                         SampleLogin->query,
  34.                         {Handle=>SampleLogin->dbh}
  35.                 ]
  36.                 );
  37.                
  38.     my %config = (
  39.         DRIVER         => [ 'DBI',
  40.          DBH => SampleLogin->dbh,
  41.          TABLE => 'user',
  42.          CONSTRAINTS =>  {
  43.                          'u_username' => '__CREDENTIAL_1__',
  44.                          'MD5:u_password' => '__CREDENTIAL_2__'
  45.                          }
  46.                          ],
  47.         STORE          => 'Session',
  48.         LOGOUT_RUNMODE => 'one',
  49.     );
  50.     SampleLogin->authen->config(%config);
  51.     SampleLogin->authen->protected_runmodes('two');
  52.  
  53.     sub setup {
  54.         my $self = shift;
  55.         $self->start_mode('one');
  56.     }
  57.  
  58.     sub one : Runmode {
  59.         my $self = shift;
  60.  
  61.         return CGI::start_html( -style => { -code => $self->authen->login_styles } )
  62.           . CGI::h2('This page is NOT protected')
  63.           . CGI::a( { -href => '?rm=two' }, 'Protected Runmode' )
  64.           . CGI::end_html();
  65.     }
  66.  
  67.     sub two : Runmode {
  68.         my $self = shift;
  69.  
  70.         return CGI::start_html( -style => { -code => $self->authen->login_styles } )
  71.           . CGI::h2('This page is protected')
  72.           . CGI::h2( 'username: ' . $self->authen->username )
  73.           . CGI::a( { -href => '?rm=one' }, 'Un-Protected Runmode' )
  74.           . CGI::br()
  75.           . CGI::a( { -href => '?authen_logout=1' }, 'Logout' )
  76.           . CGI::end_html();
  77.     }
  78. }
  79.  
  80. SampleLogin->new->run;
  81.  
Coloreado en 0.003 segundos, usando GeSHi 1.0.8.4


El error que me sale es :

Sintáxis: [ Descargar ] [ Ocultar ]
Using text Syntax Highlighting
Software error:

Can't use string ("SampleLogin") as a HASH ref while "strict refs" in use at /usr/local/share/perl5/CGI/Application/Plugin/DBH.pm line 54.
Coloreado en 0.000 segundos, usando GeSHi 1.0.8.4


y la línea 54 es my $self = shift; de sub setup
noa86
Perlero nuevo
Perlero nuevo
 
Mensajes: 93
Registrado: 2010-11-15 14:43 @655

Anterior

Volver a Básico

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 0 invitados