Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Uwierzytelnianie w PHP
Forum PHP.pl > Forum > PHP
walus16
Witam, Piszę skrypt do autorskiego Panelu Admininistratora i chciałbym, aby po zalogowaniu była możliwość przejścia do niego. Zrobiłem już tak, aby po zalogowaniu administrator miał możliwość przejścia po przez link, ale coś nie działa. Linki wyświetla mi się www.moja-strona.pl/administrator/index.php ,a chciałbym, aby był www.moja-strona.pl/administrator/index.php?token=7dadca005ce29a64 . Takie rozwiązanie widziałem w PHP Fusion więc wiem, że jest to wykonalne, ale tak jak już pisałem efekt nie jest taki na jaki liczyłem. Proszę o pomoc!

Skrypt funkcji:
  1. if (iADMIN) {
  2. define("iAUTH", substr($_SESSION['uzy_haslo'], 16, 32));
  3. $aidlink = "?token=".iAUTH;
  4. }

Fifi209
A do czego niby miałby być ten token?
walus16
Cytat(Fifi209 @ 15.06.2011, 18:25:37 ) *
A do czego niby miałby być ten token?


No więc tak. Token pobiera z bazy danych hasło zakodowane w md5, ale nie całe a tylko jego część. Każdy zarejestrowany posiada własny unikalny token, który jest tworzony na podstawie hasła użytkownika. Dzięki temu nie uprawniona osoba nie ma możliwość wejścia do panelu admina.
gothye
jaki jest sens podawania tego w url a nie w sesji ?
Fifi209
Dalej nie rozumiem do czego ma to służyć wink.gif

Logowanie robisz, do sesji zapisujesz informacje czy zalogowany i o jego uprawnieniach - cała filozofia.
toaspzoo
Cytat(gothye @ 15.06.2011, 19:10:48 ) *
jaki jest sens podawania tego w url a nie w sesji ?


dla bajeru i utrudniania życia
Fifi209
Chyba utrudniania sobie życia, bo nikomu innemu nie utrudnia to życia. ;p
Bajer? Nie wiem jaki to bajer.
walus16
Ja proszę was o pomoc jak takie coś wykonać, a nie o wasze dywagacje.
Fifi209
header i robisz przekierowanie na stronę z dopisanym tokenem.
walus16
Po waszych wypowiedziach zdecydowałem się na zrobienie tego na sesjach, ale mam pytanie czy jest sposób, aby przy dodawaniu admina była możliwość wybrania mu konkretnych uprawnień czyli np. mamy podane Newsy, Galeria, Panele, Ustawienia, a ja zaznaczę mu tylko uprawnienia do Newsy i Panele i tylko do tego będzie miał dostęp?
tehaha
no pewnie że możesz i to bardzo łatwo w bazie tam gdzie masz dane adminów dodasz też tabelę z uprawnieniami przy logowaniu pobierasz jego uprawnienia i wpisujesz do sesji i przy każdej operacji admina sprawdzasz czy posiada odpowiednie uprawnienia
walus16
A mogę liczyć na więcej informacji na ten temat?
konole
Cytat(Fifi209 @ 15.06.2011, 18:15:33 ) *
Chyba utrudniania sobie życia, bo nikomu innemu nie utrudnia to życia. ;p
Bajer? Nie wiem jaki to bajer.

Jak to co, fajnie wygląda w adresie. Tak poważnie.

@up
$_SESSION['level'] = 3/2/1/0/1337?
Fifi209
google -> PHP ACL
walus16
Dzięki. Ja planuję zrobić coś takiego, aby utworzyć w bazie danych tablę "admin" a w niej utworzyć (admin_id, admin_rights, admin_title, admin_link). W polu "admin_rights" byłoby wpisane np. NEWS. Wtedy w pliku panelu admina dotyczącym dodawania chciałem dodać:
  1. if (!checkrights("NEWS")

Następnie chcę w tabeli użytkowników dodać pole "user_uprawnienia" i jeżeli przy danym koncie będzie wpisane w tej tabeli "NEWS" to admin będzie miał prawa do tworzenia newsów.

Czy to jest dobre rozwiązanie?

mos
ja stosowałbym powiązania numeryczne a nie literowe
thek
Zastosuj może podział na role pod kątem:
Tabela userów i jedno z pól: id
Tabela ról: id, nazwa, ewentualnie jakieś konkretne dane o uprawnieniach
Tabela łączaca: id_usera, id_roli

Wybierasz id usera i sprawdzasz jakie ma uprawnienia smile.gif
Przykładowe uprawnienia/role?
Login - ma prawo bądź nie sie logować - upierdliwemu userowi wyłaczamy i może sobie poskakać wink.gif Konto ma - logować się nie może. Taki rodzaj bana smile.gif
Admin - wszystkie uprawnienia administracyjne
News - ma prawo do edycji/dodawania/usuwania newsów
Article - ma prawo do edycji/dodawania/usuwania artykułów

Zauważ, że każde z nich jest rozłączne. Jeśli kouś nadasz Admin, ale nie dasz mu Login to jest kupa. Admin bez możliwości zalogowania wink.gif Staraj się te role rozdzielać lub uszczegóławiać... Przykładowo możesz w tabeli łaczącej dać uprawnienia dodatkowe w stylu:
( id_usera, id_roli, rights ), gdzie rights będzie typu CRUD = Create, Read, Update, Delete czyli uprawnieniami do tworzenia, odczytu, aktualizacji i usuwania danych w zakresie danego uprawnienia, ale możesz też określić dziedzinę tych zasobów jako OGA = Owner, Group, All, czyli uprawnienia do kombinowania z zasobami tego typu swoimi, ludzi tej samej grupy, wszystkich. Co to daje? Przykład:
User: jakiś,
Role: Login ()
News (
O: ( C:1, R:1, U:1, D:1 ),
G: ( C:1, R:1, U:0, D:0 ),
A: ( C:1, R:1, U:0, D:0 )
)
Co to jest? Popatrz... Może robić wszystko ze swoimi newsami oraz czytać oraz tworzyć posty dla wszytkich swoich grupie lub dla wszystkich. Wystarczyło by jednak, gdyby zamienić mu ostatnią linijkę na A: ( C:0, R:1, U:0, D:0 ) mógłby tworzyć newsy jedynie dla siebie lub grup do których przynależy. A to nie zawsze oznacza, że user musi należeć do grupy Wszyscy lub Portal wink.gif Ozywiście to tylko jedna z WIELU możliwych implementacji i niekoniecznie jedyna słuszna. Wiele bowiem zależy od architektury Twojego projektu. Może bowiem być tak, że dla KAŻDEJ grupy będziesz userowi określał różne uprawnienia i będa one predefiniowane z góry, jak choćby to, że dane forum jest dostępne tylko dla grupy X czy że jest widoczne dla wszystkich, ale prawo pisania/edycji ma tylko grupa Y. Pomysłów jest naprawdę wiele smile.gif
walus16
Wielkie dzięki thek. Bardzo wyczerpująca temat odpowiedź. Teraz już wiem jak mogę rozwiązać swój problem.

Mam jeszcze pytanie odnośnie sesji. Co z bezpieczeństwem bo czytałem, że można przejąć sesję?
Fifi209
Cytat(walus16 @ 17.06.2011, 13:41:05 ) *
Mam jeszcze pytanie odnośnie sesji. Co z bezpieczeństwem bo czytałem, że można przejąć sesję?

Zależy... jeżeli masz swój hosting (nie współdzielony)
Zawsze możesz zmienić ścieżkę gdzie zapisywane są sesje, ew. napisać session handlera.

Jak dla mnie podejście thek'a jest mniej właściwe od tego, które zademonstrował nospor
http://nospor.pl/opcje-dwuwartosciowe-przechowywanie.html
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.