Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Zabezpieczenie dostępu do metod, czyli metody dostepne tylko po zalogowaniu
spike20rz
post
Post #1





Grupa: Zarejestrowani
Postów: 6
Pomógł: 0
Dołączył: 6.01.2009

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


Witam,

Costam sobie dlubie od niedawna przy OOP i natknalem sie na taki problem:
Otóż mam klase App w ktorej robie wszystkie potrzebne akcje - tj laduje obiekt bazy, template itp.
Wszystkie metody mam poprawnie zahermetyzowane, wiec public mam tylko:
  1. <?php
  2. $a = new App();
  3. $a->doLogin($user,$pass); //wiadomo
  4. $a->show(); //pokazuje panel glowny badz okno logowania
  5. ?>


Jest to klasa glowna, z ktorej chce czesto,gesto dziedziczyc. Mam powiedzmy klase Posty
  1. <?php
  2. class Posty extends App {
  3. function __construct() {
  4.   parent::__construct();
  5.   //...i logika tego konstruktora
  6. }
  7. }
  8. ?>


Zastanawiam sie (od dluzszego juz czasu) jak zrobic zeby metody Posty byly dostepne tylko po wczesniejszym zalogowaniu - oczywiscie radze sobie z wyswietleniem formularza z logowaniem itd - to nie jest problem, problem jest taki ze chce zrobic API w oparciu o ta aplikacje i akcja typu:
  1. <?php
  2. $p = new Posty();
  3. $p->usunPost(9);
  4. ?>

.. powinna byc niemozliwa do wykonania bez istniejacej poprawnej sesji.
Da sie to zrobic bez sprawdzania stanu zalogowania w kazdej metodzie,
tj: public function usunPost($id) { if ($this->status) {...

(IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif)

Ten post edytował spike20rz 6.01.2009, 20:59:28
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
pinochet
post
Post #2





Grupa: Zarejestrowani
Postów: 120
Pomógł: 12
Dołączył: 9.10.2008
Skąd: Tricity.Rumia()

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


Cytat(spike20rz @ 6.01.2009, 20:55:58 ) *
... Jest to klasa glowna, z ktorej chce czesto,gesto dziedziczyc.

Nie rozumiem tego :] Jaki to ma sens w twojej aplikacji?

kiedyś dawno temu wymysliłem coś co zobrazuje takim pseudokodem:
  1. <?php
  2. function __autoload($name){
  3. if(logged_in){
  4.     require('authorized/'.$name.'.class.php');
  5. }else{
  6.     require('unauthorized/'.$name.'.class.php');
  7. }
  8. }
  9. ?>

To apropos nie sprawdzania w każdej metodzie czy user jest zalogowany. Oczywiście teraz preferuje bardziej wyszukane metody. :wink:

Ten post edytował pinochet 6.01.2009, 21:35:54
Go to the top of the page
+Quote Post
spike20rz
post
Post #3





Grupa: Zarejestrowani
Postów: 6
Pomógł: 0
Dołączył: 6.01.2009

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


Cytat(pinochet @ 6.01.2009, 21:35:08 ) *
Nie rozumiem tego :] Jaki to ma sens w twojej aplikacji?


Ano sens ma taki ze klasy dziedzicza z niej potrzebne metody, chociazby te zwiazane z obsluga db - jest takim "nieabstrakcyjnym" szkieletem - niewiem jak to okreslic;]
Twoja metoda jest ciekawa, niemniej mnie nie urzadza - czy user jest zalogowany czy nie sprawdzam wlasnie wewnatrz klasy App, upychanie tego w autoload jest bez sensu. Aplikacja dziala w przegladarce i jest dobrze (w miare moich mozliwosci) zabezpieczona przed dostepem do metod wymagajacych logowania - poprostu to logowanie wyswietla juz z konstruktora i die() - jak juz pisalem chce utworzyc API, wiec wewnatrz obiektu musze jakos zezwolic badz nie na dostep do metod.
Cytat(pinochet @ 6.01.2009, 21:35:08 ) *
To apropos nie sprawdzania w każdej metodzie czy user jest zalogowany. Oczywiście teraz preferuje bardziej wyszukane metody.

Dlatego tez niechcac trącic amatorka zwrocilem sie na to forum i takowe metody chcialbym poznac - moglbys sie jakimis podzielic?

Ten post edytował spike20rz 6.01.2009, 21:56:16
Go to the top of the page
+Quote Post

Posty w temacie


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

 



RSS Aktualny czas: 24.12.2025 - 15:04