Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [Code Igniter] ACL
marcin.pospiech
post 7.10.2007, 15:03:06
Post #1





Grupa: Zarejestrowani
Postów: 13
Pomógł: 1
Dołączył: 25.04.2007
Skąd: Zegrze

Ostrzeżenie: (0%)
-----


Chciałem poprosić o pomoc i rady. Z Code Igniter dopiero zaczynam, popisałem sobie w nim już pare dni, ogólnie poznałem jego sposób działania, etc.

Mam natomiast problem, jak rozwiązać autoryzację i ogółem - kontrolę dostępu. Póki co, dodaje do każdego kontrolera funkcję prywatną _logged(), która zwraca mi bool'owską odpowiedź. Jeżeli jakaś podstrona, czyli metoda jakiegoś kontrolera wymaga bycia zalogowanym za pomocą właśnie tej funkcji sprawdzam i dalej steruję if ... else. W przypadku, gdy gdzieś potrzebuję uprawnień administratora - sprawdzam przez bibliotekę session wartość zmiennej "permission".

Mam obiekcje, co do sposobu, w jaki to rozwiązałem. Po pierwsze, nie wydaje mi się to być robione w sposób "poprawny", jest nieelastyczne, muszę się powtarzać, no i jest niewygodne.

Szukałem w Google informacji na temat ACL w Code Igniter i jedyną sensowną rzeczą, którą znalazłem jest: User-Auth Mini-App. Jednak po chwili okazało się, że jest nieaktualizowane już od całego roku, więc zostawiłem to w spokoju.

Prosiłbym o rady odnośnie tego, czy robię to źle/dobrze i czy jest to bezpieczne, propozycje jak rozwiązać to lepiej, bo jestem przekonany, że tak można, no i przede wszystkim, o ile istnieją, o odnośniki do już przygotowanych bibliotek. Troszkę nie chce mi się wierzyć, że w takim popularnym frameworku, chwalonym przez ogrom osób, każdy piszę swoją bibliotekę do autoryzacji i uwierzytelniania.


--------------------
Zapraszam na mojego bloga - http://blog.walker.net.pl/
Go to the top of the page
+Quote Post
nrm
post 7.10.2007, 16:01:36
Post #2





Grupa: Zarejestrowani
Postów: 627
Pomógł: 33
Dołączył: 1.05.2005
Skąd: Katowice

Ostrzeżenie: (0%)
-----


Prawdziwego ACLa do CI nie ma. Możesz:

- użyć FreakAuth, nie jest technicznie zaawansowany, za to ma milion plików. Nie lubię go. Blogfrog używa.
- użyć klasy zend_acl z pakietu klas mylnie nazwanych ZendFramework
- użyć innej klasy (plusem CI jest spora elastyczność w dołączaniu zewnętrznych klas)
- napisać swoją własną

Sposób użycia?
Są niby "hooks" (czyli pre/post filtry) ale w CI działają dziwacznie, nie do końca jestem przekonany czy dev CI zrozumieli "o co komon".
Najlepiej będzie jak w autostarcie załadujesz swoją ACL bibliotekę, a w kontrolerach (akcjach lub w konstruktorze) wywołasz swoje $this->acl->isAuth();


--------------------
Go to the top of the page
+Quote Post
marcin.pospiech
post 7.10.2007, 16:21:44
Post #3





Grupa: Zarejestrowani
Postów: 13
Pomógł: 1
Dołączył: 25.04.2007
Skąd: Zegrze

Ostrzeżenie: (0%)
-----


Dziękuje za odpowiedź.

Jakiego rozwiązania Ty używasz, bo domniemam, że napisałeś swoją własną bibliotekę?

Czy używanie biblioteki "session" w sposób, jaki opisałem w pierwszym poście jest poprawnym i bezpiecznym? Czy mogę o niego oprzeć budowanie własnego ACL?

I jeśli można o jeszcze jakieś ewentualne dodatkowe wskazówki dotyczące budowania tegoż ACL w CI.


--------------------
Zapraszam na mojego bloga - http://blog.walker.net.pl/
Go to the top of the page
+Quote Post
nrm
post 7.10.2007, 16:27:51
Post #4





Grupa: Zarejestrowani
Postów: 627
Pomógł: 33
Dołączył: 1.05.2005
Skąd: Katowice

Ostrzeżenie: (0%)
-----


I tak większość rozwiązań opiera się na sesjach więc jest to bezpieczny sposób na tyle ile same sesje są bezpieczne.

Ja używam własnego pseudo ACLa, a teraz będę pisał nowego bo poprzedni był kiepski, przerabiany wielokrotnie przez co jest niespójny i sam się już w nim gubię. Poza tym był prosty a teraz będę pisał pod konkretne zastosowanie.


--------------------
Go to the top of the page
+Quote Post
marcin.pospiech
post 7.10.2007, 16:40:06
Post #5





Grupa: Zarejestrowani
Postów: 13
Pomógł: 1
Dołączył: 25.04.2007
Skąd: Zegrze

Ostrzeżenie: (0%)
-----


Czy mógłbyś go udostępnić jako swego rodzaju przykład, na którym mógłbym się wzorować/bazować, albo po prostu zobaczyć sposób, w jaki został wykonany?

Czy FreakAuth, pomimo wielu plików, działa sprawnie i dobrze spełnia swoje zadanie?

Czy opłaca się portować klasę Zend_ACL i czy nie będzie to sprzeczne z jakimiś ustaleniami bądź licencjami Zenda?


--------------------
Zapraszam na mojego bloga - http://blog.walker.net.pl/
Go to the top of the page
+Quote Post
nrm
post 7.10.2007, 17:09:20
Post #6





Grupa: Zarejestrowani
Postów: 627
Pomógł: 33
Dołączył: 1.05.2005
Skąd: Katowice

Ostrzeżenie: (0%)
-----


1. Nie.

2. Działa ok, czy spełnia zadanie to zależy czego potrzebujesz. Dla mnie nie spełnia.

3. Poczytaj licencje, imho możesz robić co chcesz. Czy "portować"? Zależy czy ta klasa Ci odpowiada. Jak tak to nawet nie ma co pytać tylko używać. winksmiley.jpg Mi ona nie odpowiada, dodatkowo musiałbym ją przystosować do obsługi bazy.

4. Może Tackle? "Tackle is a small ACL authentication module for PHP database applications. It is designed to have a low profile and be easy to implement and use. Users can grouped and allowed or denied access to user definable actions and resources."


--------------------
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 14.06.2025 - 18:00