[Warszawa-pm] LoginSimple na PSGI

Zbigniew Lukasiak zzbbyy w gmail.com
Nie, 13 Lut 2011, 06:19:59 PST


2011/2/13 Maciej Grzybek <mashester w gmail.com>:
> -----BEGIN PGP SIGNED MESSAGE-----
> Hash: SHA1
>
> W dniu 13.02.2011 02:05, Zbigniew Lukasiak pisze:
>> Hej!
>>
>> Co myślicie o czymś takim?
>>
>> Załączam pierwszy eksperyment w tym kierunku - czyli dwie Aplikacje na
>> Placka (LoginApp i LogoutApp) i prosta aplikacyjke która je
>> wykorzystuje.
>>
>> Poniżej jak to działa:
>>
>> package main;
>> #use LoginApp;
>> #use LogoutApp;
>> use Plack::Builder;
>>
>> sub check_pass {
>>     my( $username, $pass ) = @_;
>>     if( $username eq $pass ){
>>         return 0, $username;
>>     }
>>     else{
>>         return 'Wrong username or password';
>>     }
>> }
>>
>> builder {
>>     enable 'Session';
>>     mount '/login' => LoginApp->new( check_pass => \&check_pass )->to_app;
>>     mount '/logout' => LogoutApp->new()->to_app;
>>
>> Czyli potrzebny jest callback do sprawdzania hasła - przekazujemy to
>> do LoginApp i montujemy ją pod adresem /login.  Pod /logout
>> odpowiednio LogoutApp.
>>
>> Całość działa tak, że po zalogowaniu przenosi nas na stronę z której
>> weszliśmy do /login i to działa zarówno w przypadku gdy przechodzimy
>> przez linka (jak w załączonym kodzie) jak i jeśli ze strony
>> wymagającej loginu zrobimy redirecta do /login i zapiszemy adres na
>> który trzeba wrócić w sesji (pod redir_to) - na przykład tak:
>> $env->{'psgix.session'}{redir_to} = $env->{PATH_INFO};
>>
>> Pozdrawiam,
>> Zbyszek
>> _______________________________________________
>> Warszawa-pm mailing list
>> Warszawa-pm w pm.org
>> http://mail.pm.org/mailman/listinfo/warszawa-pm
>>
>
> Zbyszku, taki mały szczegół, ale być może warto przemyśleć:
> skoro umożliwiasz ustawienie redir_to przy logowaniu, dlaczego nie
> pozwolisz na to przy wylogowaniu, tylko z marszu zakładasz, że
> użytkownik powinien zawsze polecieć do '/'?

OK - chyba statyczny parametr?

> Przekazywanie callbacka wydaje się sensowne, ponieważ pozwala
> developerowi dopasować autha pod swoje wymogi (dodatkowe warunki do
> sprawdzenia etc.).
> Program krótki, więc wiele do komentowania nie ma. :)

No dobra - a użyłbyś w swojej aplikacji?

Jest jeszcze sprawa wyświetlania stronki /login.  Potrzebny byłby
jakiś mechanizm, żeby to było wyświetlane razem z normalnym
'kontentem' czyli z 'headerami', 'footerami' o co tam kto chce.
Plack::App byłby dobry na takie szybkie sprawdzenie, że to działa -
ale tak normalnie to trzeba by to jakoś inaczej zorganizować.  Może
używać to  jako Middleware i odłożyć formatke na %env?

Co do tej formatki zmiany hasła to nie przypuszczam, żeby to było
załatwione - jak napiszesz coś w miarę uniwersalnego to wyślij na ich
listę.

Pozdr.
Zbyszek


Więcej informacji o liście Warszawa-pm