Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [ZendFramework][Zend_Auth]pytanie i identyfikacje
R4D3K
post 30.08.2010, 08:08:37
Post #1





Grupa: Zarejestrowani
Postów: 144
Pomógł: 12
Dołączył: 16.03.2007

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


Witam od niedawna zacząłem swoja przygodę z ZF 1.10. Problem, który posiadam dotyczy działania Zend_Auth. Na potrzeby witryny, której tworzę stworzyłem własny adapter:
  1. <?php
  2. class My_Adapter_Auth implements Zend_Auth_Adapter_Interface {
  3. private $_password;
  4. private $_Zend_Auth_Result;
  5. public function __construct($password=null) {
  6. if (is_null($password)) {
  7. $this->_Zend_Auth_Result=Zend_Auth_Result::FAILURE;
  8. }
  9. else {
  10. $model=new Application_Model_DbTable_Config();
  11. $this->_password=$model->fetchRow()->password;
  12. if ($password==$this->_password) $this->_Zend_Auth_Result=Zend_Auth_Result::SUCCESS;
  13. else $this->_Zend_Auth_Result=Zend_Auth_Result::FAILURE;
  14. }
  15. }
  16.  
  17. public function authenticate() {
  18. return $this->_Zend_Auth_Result;
  19. }
  20. }
  21. ?>


I oczywiście aby sprawdzić czy dany user podał poprawne hasło wykonuje:
  1. $authAdapter=new My_Adapter_Auth($password);
  2. $result=Zend_Auth::getInstance()->authenticate();


I to pojawia się moje pytanie. Za każdym razem gdy wykonuje się metoda authenticate(); to adapter wykonuje połączenie z bazą danych i sprawdza czy hasło jest poprawne ? Zanim zacząłem naukę ZF używałem też jakieś metody sprawdzenia loginu i hasła bądź, też samego hasła i wynik jej działania zapisywałem w sesji np $_SESSION['zalogowany']=true; Czy Zend_Auth (domyślam się że tak) w podobny sposób zapisuje dane do sesji ? Jeśli tak to w jaki sposób je odczytać, żeby nie wykonywać za każdym razem zapytania i czy tego mechanizmu nie muszę zaimplementować w adapterze jeśli tak to w jaki sposób ?
Przepraszam za moja pytania, ale w manulau nie udało mi się uzyskać stosownych odpowiedzi.
Go to the top of the page
+Quote Post
zend
post 30.08.2010, 09:23:33
Post #2





Grupa: Zarejestrowani
Postów: 580
Pomógł: 85
Dołączył: 25.03.2010
Skąd: Skrzyszów :)

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


Wynajdujesz koło na nowo tworząc własny adapter, jest gotowe rozwiązanie które działa lepiej, wystarczy tylko nadpisać kilka metod. authenticate(); wykonujesz tylko w akcji logowania, sprawdzanie autoyzacji robisz tak:
  1. if(Zend_Auth::getInstance() -> hasIdentity())
  2. {
  3. Zend_Auth::getInstance() -> getIdentity();
  4. }
Go to the top of the page
+Quote Post
yevaud
post 30.08.2010, 09:33:09
Post #3





Grupa: Zarejestrowani
Postów: 471
Pomógł: 89
Dołączył: 29.07.2008
Skąd: Warszawa

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


jesli chodzi o zapisywanie wynikow autentykacji, rzuc okiem na Zend_Auth_Storage
http://framework.zend.com/manual/en/zend.a...troduction.html

zamiast Twojego adaptera lepiej spisze sie standardowy
http://framework.zend.com/manual/en/zend.a...er.dbtable.html

Go to the top of the page
+Quote Post
R4D3K
post 30.08.2010, 14:31:39
Post #4





Grupa: Zarejestrowani
Postów: 144
Pomógł: 12
Dołączył: 16.03.2007

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


Dziękuję za odpowiedzi. Zapoznałem się z Zend_Auth_Adapter_DbTable i moje pytania odnośnie jego:
Konieczność zdefiniowania pola login a mój przypadek uwzględnia samo pole tylko password w jaki sposób tak na szybko to przerobić żeby dział ten zdefiniowany adapter ?
  1. $adapter=new Zend_Auth_Adapter_DbTable(Zend_Db_Table_Abstract::getDefaultAdapter(),
  2. 'config', null, 'password');

Pole null wywołuje błąd ....
Go to the top of the page
+Quote Post
zend
post 30.08.2010, 19:39:45
Post #5





Grupa: Zarejestrowani
Postów: 580
Pomógł: 85
Dołączył: 25.03.2010
Skąd: Skrzyszów :)

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


Musisz nadpisać _authenticateCreateSelect() i a co do loginu to wstaw tam cokolwiek, żeby tylko przeszło walidację
Go to the top of the page
+Quote Post
R4D3K
post 31.08.2010, 14:41:15
Post #6





Grupa: Zarejestrowani
Postów: 144
Pomógł: 12
Dołączył: 16.03.2007

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


Cóż powiem, że już skorzystałem z własnego adaptera, dużo z nim roboty nie było a działa jak należy ;D
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: 12.06.2024 - 20:38