2011-09-07 11 views
5

Od dłuższego czasu programuję z Sinatrą i Padrino. Jednak nadal nie jestem w stanie znaleźć właściwego rozwiązania do uwierzytelniania i autoryzacji dla Padrino. Pozwól mi wyjaśnić moje oczekiwania i to, co już wypróbowałem.Rozwiązanie uwierzytelniania i autoryzacji dla Padrino

Z Sinatra, z powodzeniem używam klejnotu sinatra-authentication wraz z klejnotem role_model. Generalnie używam Mongoid ORM do rozmowy z MongoDB. Te dwa klejnoty razem pozwalają mi zadbać o uwierzytelnianie, ochronę tras, sprawdzanie ról zalogowanego użytkownika w celu zastosowania kontroli dostępu.

uwierzytelnianie sinatra nie działa z Padrino - jest to bardzo specyficzne dla Sinatry. Próbowałem go wiele razy. Próbowałem już zarówno Omniauth, jak i opiekuna z odpowiednimi modułami Padrino, ale z tego czy innego powodu nie jestem w stanie zmusić ich do pracy po prostu jako cudownego klejnotu autentyzującego się przez sinatrę.

Zanim spróbuję wdrożyć własne rozwiązanie (lub przeprowadzić uwierzytelnianie Sinatra dla Padrino) - czy ktoś może zaproponować inne rozwiązania uwierzytelniające i autoryzacyjne? W tej chwili nie potrzebuję niczego nadzwyczajnego - proste uwierzytelnianie oparte na bazie danych działa doskonale.

Odpowiedz

0

Proponuję użyć wbudowanego rozwiązania uwierzytelniającego, wystarczy rzucić okiem na padrino-admin, możesz użyć Padrino :: Authentication bez administratora w dowolnej aplikacji, której potrzebujesz.

To całkiem proste, oparte na rolach/ścieżce.

http://www.padrinorb.com/api/Padrino/Admin/AccessControl/Base.html#allowed%3F-instance_method

+3

Użycie padrino-admin zmusza do pracy z modelem konta wygenerowanym przez administratora (lub obejściem to); które mogą nie być optymalne dla PO. Co ważniejsze, istnieją otwarte problemy bezpieczeństwa (https://github.com/padrino/padrino-framework/issues/384) każdy, kto wdraża padrino-admin w produkcji powinien być świadomy. – pithyless

+2

Ten problem bezpieczeństwa został zamknięty 2 lata temu, fyi przyszli widzowie – Jonah

1

samodzielne rozwiązanie uwierzytelniania dla Padrino has been discussed, ale nie został jeszcze rozwiązany. W międzyczasie jedną popularną sugestią jest użycie padrino-warden.

Nota prawna: Jestem w podobnej sytuacji jak OP i nie mam jeszcze doświadczenia w prowadzeniu osobistego opiekuna w produkcji.

+0

Tak, aby rzucić trochę światła na to - to zostało zaplanowane na v1.0. W efekcie możemy wdrożyć API, aby podłączyć własne rozwiązanie (wraz z zaleceniami/sugestiami) i oddzielne problemy między autoryzacją a uwierzytelnianiem. Bądź na bieżąco z tematem wyróżnionym przez @pithyless. –

1

Ryan Bates ma świetny screencast Railsów, jak to zrobić (nie za darmo: http://railscasts.com/episodes/250-authentication-from-scratch-revised).

Nie powinno być zbyt trudno dostosować Rails Magic i zrobić to samo dla Sinatry lub Padrino.

To może nie być dobre rozwiązanie, jeśli potrzebujesz mnóstwa funkcji, takich jak zapomniane hasła, itp. Ale po raz kolejny nie powinno to być zbyt trudne do przystosowania.

3

Wiem, że pytanie ma dwa lata. Ale ostatnio miałem jeszcze ten sam problem, że strażnik padrena jest źle udokumentowany i miałem wiele problemów. Więc udokumentowałem moje odkrycia na workaround.org. Niech to pomoże mniej szczęśliwym.

Uważam padrino-admin za ładne rusztowanie do nauki. Ale model użytkownika jest raczej nieelastyczny. A koncepcja autoryzacji dziwnie robi to, czego nie lubią autorzy Padrino: umieszczanie ścieżek konfiguracji w centralnym miejscu zamiast przenoszenia konfiguracji do kontrolerów. (Padrino-admin ma dodatkowe problemy, takie jak brakująca obsługa stronicowania i brak obsługi kluczy zagranicznych, więc nie jest to porównywalne z tym, co zapewnia Django.)

Powiązane problemy