Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [Symfony] $this->getUser()->clearCredentials(); nie działą, dlaczego
Forum PHP.pl > Forum > PHP > Frameworki
stachuf11
Witam
Dlaczego polecenie $this->getUser()->clearCredentials(); nie czyści mi Credentials, po wywołaniu tego polecenia,
pobieram informacje z $this->getUser()->getAttribute tak jak przed czyszczeniem, dlaczego
Stachu
mike
Z tego samego powodu dlaczego po odkręceniu koła w samochodzie nadal można używać klaksonu.

Atrybuty i uprawnienia to różne rzeczy.
stachuf11
Jak to


  1. <?php
  2. $sesia=$this->getUser();
  3. if (!$sesia->hasCredential('rezerwacja'))
  4. $sesia->addCredential('rezerwacja');
  5. $sesia->setAttribute('daty',$staredaty,'rezerwacja');
  6. ?>


czyli wstawiam atrybut do credentiala,
pozniej sobie czytam

  1. <?php
  2. $daty=$this->getUser()->getAttribute('daty','','rezerwacja');
  3. // i czyszcze credentiala
  4. $this->getUser()->removeCredential('rezerwacja'); 
  5. // pomimo to moge ponownie odczytac dane 
  6. $daty=$this->getUser()->getAttribute('daty','','rezerwacja');
  7. // dlaczego, jak wyczyscic credentiala "rezerwacja" lub atrybut "daty" w credentialu "rezerwacja"
  8. ?>


pozdrawiam
Stachu
SongoQ
Powyższy przykład działa jak należ tak ma być.

@stachuf11 Mam pytanie do Ciebie co robi? setAttribute() i getAttribute() ?
stachuf11
No wiadomo że
  1. <?php
  2. $sesia->setAttribute('daty',$staredaty,'rezerwacja');
  3. ?>

ustawia atrybut 'daty' do kredentiala 'rezerwacja' o wartosci $staredaty
a
  1. <?php
  2. $daty=$this->getUser()->getAttribute('daty','','rezerwacja');
  3. ?>


pobiera wartość atrybutu 'daty' z credentiala 'rezerwacja', ale ta odpowiedz nie pomoze mi w rozwiazaniu problemu, jak usunąć atrybut 'daty' z credentiala 'rezerwacja'.
pozdrawiam
Stachu
mike
Cytat(stachuf11 @ 21.01.2008, 12:10:59 ) *
ustawia atrybut 'daty' do kredentiala 'rezerwacja' o wartosci $staredaty
(...)
pobiera wartość atrybutu 'daty' z credentiala 'rezerwacja',
Obawiam się, że masz problem dlatego że pomieszałeś dwie rzeczy.
I Attributes i Credentials są zapisywane do sesji. Natomiast to są rozłączne rzeczy.
Attributes to po prostu atrybuty użytkownika, to nie są uprawnienia! Możesz tam wrzucać dowolne informacje związane z użytkownikiem, do których chcesz mieć dostęp podczas sesji użytkownika.
Nadawanie użytkownikowi praw to Credentials. Jeśli je wyczyścisz to nie ma on praw dostępu, które miał. Ale nie ma to żadnego związku z atrybutami pozostałej sesji.

Twój problem polega na tym że do atrybutów (Attributes) wkładasz informacje związane z uprawnieniami (Credentials) a nie ma takiej potrzeby.
Jeśli natomiast już tak masz co samo removeCredential() nie wystarczy bo to usunie uprawnienia z Credentials a że Ty masz je zapisane również w Attributes to musisz sam stamtąd je wywalić.

Przeczytaj sobie dokładnie The Book :: Action Security. Zrozumiesz ten mechanizm.
stachuf11
Czyli
  1. <?php
  2. $this->getUser()->getAttributeHolder()->remove('daty');
  3. // usunie atrybut daty, nizależnie do jakiego credentiala atrybut był przypisany?, jak usunąć atrybut przypisany do konkretnego credentiala
  4. // bo mam wiele atrybutów a takiej samej nazwie a przypisane są do różnych credentiali
  5. ?>
destroyerr
Przecież mike napisał Ci, że są to dwie odrębne sprawy. Nie można atrybutów przypisywać do 'credentiala', atrybuty przypisywane są do usera (sesji). Jeśli link, który dał Ci mike nie wyjaśnił Ci sprawy to proponuję wycieczkę do kodu. Tam zobaczysz, że jedno z drugim nie wiele wspólnego.

Napisz co chcesz osiągnąć a będziemy wtedy mogli doradzić.
mike
Atrybuty nie są przypisywane do uprawnień! Patrz moje porównanie z pierwszego posta.
Dodając uprawnienie nie dodajesz nic do atrybutów, nie ma potrzeby. Stąd odbierając uprawnienie nie są kasowane atrybuty.

Przeczytaj dokumentacje bo bez tego nie mamy o czym rozmawiać.
stachuf11
Witam
Dziekuję bardzo za wyprostowanie mojego błednego myślenia, zmyliły mnie przykłady z
http://www.symfony-project.org/askeet/1_0/6,

a rzeczywiście nie trzeba przypisywać credential, aby zachować atrybuty
a cos takiego
  1. <?php
  2. $sesia=$this->getUser();
  3. $sesia->setAttribute('daty',$staredaty,'rezerwacja');
  4. ?>


trzeci parametr 'rezerwacja' określa grupę atrybutów, czy dobrze rozumię
natomiast
  1. <?php
  2. $this->getUser()->getAttributeHolder()->remove('daty','rezerwacja');
  3. ?>


usuwa atrybut z danej grupy atrybutów 'rezerwacja', czy tak?

pozdrawiam
Stachu
mike
Cytat(stachuf11 @ 22.01.2008, 07:44:25 ) *
usuwa atrybut z danej grupy atrybutów 'rezerwacja', czy tak?
Lepszą nazwą jest przestrzeń nazw.
Tak, z przestrzeni nazw (grupy) rezerwacja usunięty zostanie atrybut daty.
stachuf11
dziękuje wszystkim za udział w dyskusji i pomoc
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.