Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Autoryzacja - Skąd to ugryźć !?
Forum PHP.pl > Forum > PHP > Object-oriented programming
Turgon
Otóż mamy sobie taką klasę :
  1. <?php
  2. class TurAuthenticate{
  3. private $isAuthenticated = false;
  4. private $oUser;
  5. private $oSession;
  6.  
  7. public function __construct(){
  8. $this->oSession = new TurSession('UserSession');
  9. if(!isset($this->oSession->userId))$this->oSession->userId = -1; 
  10. $this->oUser = new TurUser('id',$this->oSession->userId);
  11. $this->IsAuthenticated = $this->oSession->isAuthenticated;
  12. }
  13.  
  14. public function isAuth(){
  15. return $this->isAuthenticated;
  16. }
  17.  
  18. public function signOut(){
  19. $this->oSession->userId = -1;
  20. $this->oUser = null;
  21. $this->isAuthenticated = false;
  22. $this->oSession->isAuthenticated = false;
  23. }
  24.  
  25. public function signIn($name,$pass){
  26. $this->oUser = new TurUser('name',$name);
  27. if($this->oUser->pass = $pass){
  28. $this->isAuthenticated = true;
  29. $this->oSession->isAuthenticated = true;
  30. $this->oSession->userId = $this->oUser->id;
  31. }
  32. }
  33. }
  34. ?>


Ale problem pojawia się gdy trzeba wywalić sesję. Zliczyć je, to dopiero masakra... Jakieś konkretne propozycje ?
Może własny SessionHandler ? Na bazie ? Jak tak to mySQL czy coś innego? Jak to robić ?
Athlan
Co do handlera, najlepiej użyć do podstawy (przypisania) naszych funkcji/metod:
http://www.php.net/manual/en/function.sess...ave-handler.php

Poza tym jaki jest sens metody signIn($name,$pass) itp? Skoro możesz napisać prostą i przejrzystą obsługę użytkownika trzymającą dane o jego grupach i danych (ew boolean czy jest zautoryzowany). Przykład bardzo prosty:
http://framework.vgroup.pl/expose-cab9852b...f33e1b4ac40.htm

Pozdrawiam, Piotrek smile.gif
Turgon
@Piotrek: Tym zajmuje się klasa TurUser. Klasę TurAuthenticate nie obchodzi użytkownik, tylko kontrola czy jest zautoryzowany. TurUser'a zaś nie obchodzi sposób autoryzacji, tylko odpytuje o to klasę TurAuthenticate. Mam nadzieje, że w miarę jasno się wyraziłem. Kombinuje, żeby to było bezpieczne, szybkie, lekkie i możliwie jak najprostsze. Jak na razie nie widzę żadnego rozwiązania...

Widzę, że nikt nie ma zamiaru mi odpowiedzieć. Obmyśliłem sobie to tak. Otóż w bazie jest tabela:
Cytat
sessions
sId lastAction sVars

To jak na razie w uproszczeniu cała podstawa. Do tego klasa (nie oparta na PHP)... Generowanie Id:
  1. <?php
  2. $sid = md5(crypt(rand()));
  3. ?>

Następnie składowanie sesji. W razie jej rozpoczęcia utworzenia ciacha. Lifetime regulowalny.
Choć mam pewne wątpliwości, co do samej autoryzacji stricte sensu. Co się stanie gdy sesja będzie gubić dane? I jak z dostępem tongue.gif
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.