[SP-pm] Validar session no Catalyst
Nelson Ferraz
nferraz at gmail.com
Mon Jul 11 05:37:58 PDT 2011
Lucas> para validar:
Lucas> sub end :Private {
Lucas> my ( $self, $c ) = @_;
Lucas> if(!$c->user_exists){
Lucas> $c->res->redirect('/login');
Lucas> }
Lucas> }
Lucas>
Lucas> para pegar valores do Args:
Lucas> sub alterar :LocalRegex('[0-9]') {
Lucas> my ( $self, $c, @get) = @_;
Lucas> $c->stash->{valor} = $get[0];
Lucas> $c->forward('View::TT');
Lucas> }
Sem querer iniciar uma flamewar, mas este é apenas mais um exemplo
onde o Catalyst complica demais algo que deveria ser simples.
Veja como isso pode ser feito no Mojolicious:
#!/usr/bin/perl
use Mojolicious::Lite; # implicitly use strict and warnings
# 1: verificar uma variável de sessão
get '/' => sub {
my $self = shift;
my $username = $self->session('username');
self->redirect_to('/login') if !$username;
$self->render( text => "Hello, $username" );
};
# 2: definir uma variável de sessão
get '/login' => sub {
my $self = shift;
my $username = $self->param('username');
my $password = $self->param('password');
if ($username eq 'foo' and $password eq 'bar') {
$self->session( username => $username );
$self->redirect_to('/');
}
$self->render( text => "Please use:
http://localhost:3000/login?username=xxx;password=yyy" );
};
# 3: remover uma variável de sessão
get '/logout' => sub {
my $self = shift;
my $username = $self->session('username');
$self->session( username => undef ); # poderia ter usado "expire"
$self->render( text => "Bye bye, $username" );
};
app->start();
__END__
Mais informações:
http://search.cpan.org/~sri/Mojolicious-1.64/lib/Mojolicious/Lite.pm#Sessions
[]s
Nelson
PS: Até onde eu sei, o Eden estava trabalhando em um projeto que
traria esse tipo de simplicidade para o Catalyst. Em que pé está esse
projeto, Eden?
More information about the SaoPaulo-pm
mailing list