2013-03-12 14 views
5

Mam aplikację internetową typu tancerz, która jest częścią strony internetowej i części serwisu WWW; niektóre trasy na mojej aplikacji powinny mieć autoryzację.Perl Dancer Auth Solution obsługujący klawisze API?

Wszystkie auth rozwiązania, które znalazłem dla aplikacji internetowej Dancer wymagają przekierowania do strony logowania; chociaż jest to w porządku do interaktywnego użytku, nie jest to optymalne dla spokojnej usługi internetowej.

Czy istnieje auth rozwiązanie, które pozwoliłoby na coś takiego jak klucze API?

+1

Nie wiem zbyt wiele o kluczach API, więc niestety nie mogę ci tam pomóc. Metoda uwierzytelniania opisana w Dancer :: Cookbook zapewnia prostą usługę sieci Web podobną do REST do uwierzytelniania i przechowywania szczegółów uwierzytelniania w sesji tancerza. Z powodzeniem używam takiej strategii z moją aplikacją klient/serwer opartą na REST. Kluczową rzeczą, o której należy pamiętać, jest to, że Twoi klienci muszą mieć możliwość przechowywania plików cookie sesji i przekazywać je w nagłówku żądania po uwierzytelnieniu. Daj mi znać, jeśli chcesz uzyskać więcej informacji. –

+0

Myślałem, że za pomocą sesji/plików cookie naruszone zasady REST ... – Blaskovicz

+0

Myślę, że to zależy od widać zasady REST. Jedną z zasad jest tworzenie usług bezpaństwowych i tak - używanie sesji narusza to. Jeśli jednak zobaczysz zasadę REST jako pragmatyczne użycie ustalonych technologii internetowych, sesje i pliki cookie mają więcej sensu. Podobnym podejściem zaproponowanym mi przez kolegę jest przekazanie nazwy użytkownika i hasła w nagłówku żądania. Następnie możesz obsłużyć informacje z nagłówka przed wyzwalaczem za pomocą Dancer. Jest to podejście bezpaństwowe, które nie polega na plikach cookie, ale może utrudnić testowanie uwierzytelnionych usług. –

Odpowiedz

2

Powinieneś rzucić okiem na Dancer::Plugin::Auth::Extensible, aby to zbudować. Najprostszy sposób, aby wysłać poświadczenia w każdym żądaniu. Na kliencie, byłbyś nazywając swoje usługi REST tak:

$ua->post('http://example.com/rest/getStuff?cred=foobar1234567, $search_criteria); 

Jeśli zrobisz to w ten sposób, można zapewnić ciasteczko, ale nie muszą, a klient nie koniecznie dbaj o plik cookie.

Edycja: Jeśli potrzebujesz podstawowego uwierzytelnienia, spójrz na Plack::Builder. Możesz go użyć, aby dodać autoryzację do określonych żądań.

+1

Rozmawiałem z autorem o tym module; próbuje przekierować do formularza/logowania z każdym żądaniem (co nie będzie działało łatwo w przypadku restful web services). – Blaskovicz