Paweł Ługowski

Paweł Ługowski Software Developer

Temat: Problem z helperem Session

Mam zagwostkę.

Korzystam z komponentu Auth do autoryzacji i mam ustawione:

$this->Auth->authError = "Sorry, you are lacking access.";
$this->Auth->loginError = "No, you fool! That's not the right password!";

Natomiast w default.ctp - layout, wywołuje:
echo $session->flash();
echo $session->flash('auth');

i tutaj jest problem, bo w sesje wrzucane jest Message.auth ale nie komunikat sie nie wyswietla.

jakies pomysły co jest grane?
Kamil Kosiński

Kamil Kosiński CTO w
DobryMechanik.pl

Temat: Problem z helperem Session

1. jak zrobisz pr($_SESSION) w default.ctp to widac ten komunikat?
2. kiedys mi sie zdarzylo, ze "cos" odswiezalo strone (efekt byl taki, ze ladowala sie 2 razy i za drugim razem komunikatu juz oczywiscie nie bylo). daj wiec na wszelki wypadek po $session->flash('auth') exit; i zobacz czy naprawde nic sie nie wyswietla.
3. napewno jest blad w auth? a moze cos jest zle pokonfigurowane i tak naprawde auth nie wywala bledu?Kamil Kosiński edytował(a) ten post dnia 26.11.10 o godzinie 12:37
Paweł Ługowski

Paweł Ługowski Software Developer

Temat: Problem z helperem Session

No to zagwostka, w controllerze jak wywołuje var_dump($this->Session->read());
dostaje:

'Message' =>
array
'auth' =>
array
'message' => string 'No, you fool! That's not the right password!' (length=44)
'element' => string 'default' (length=7)
'params' =>
array
...

Natomiast pr($_SESSION) w layoucie zwraca mi:
[Message] => Array
(
)

[Auth] => Array
(
[redirect] => /account
)

i mała ciekawostka, jak wejde w /cake/libs/views/helpers/session.php
i zakomentuje w linii 158 - parent::delete('Message.' . $key); (metoda flash() )

To komunikat wyswietla mi się prawidłowo (oczywiście bez kasowania wpisu z sesji) i po pr($_SESSION) w layoucie mam:

[Message] => Array
(
[auth] => Array
(
[message] => No, you fool! That's not the right password!
[element] => default
[params] => Array
(
)

)

)

AppModel::beforeFilter() wyglada u mnie tak:

Security::setHash("md5");
$this->Auth->fields = array('username' => 'login', 'password' => 'password');
$this->Auth->loginAction = array('controller' => 'users', 'action' => 'login');
$this->Auth->userScope = array('User.status' => array('confirmed','active','hidden'));
$this->Auth->authError = "Sorry, you are lacking access.";
$this->Auth->loginError = "No, you fool! That's not the right password!";

Any idea?
Kamil Kosiński

Kamil Kosiński CTO w
DobryMechanik.pl

Temat: Problem z helperem Session

exit po wywalaniu session->flash(), powinienes dzieki temu miec pewnosc, ze stronka laduje sie raz. jesli to nie pomoze, to wywal na chwile wszystkie jsy i znowu sprawdz.

komunikat jest juz gdzies wypluwany i tak jak pisalem na poczatku moze sie okazac, ze strona sie przeladowuje, ale tak, szybko, ze tego nie widzisz i za drugim razem juz nie ma co pokazac.
Paweł Ługowski

Paweł Ługowski Software Developer

Temat: Problem z helperem Session

exit'owanie nie pomaga, wyłaczenie javascriptu też nie.

Z ciekawości w AppControllerze w metodzie afterFilter też wyprintowałem _SESSION i już auth'a nie było... Pomału zaczynam sie wkurzac na to, bo nie wiem co moze być tutaj nie tak, tymbardziej, że zwykły setFlash i session->flash() działa bez problemów, problematyczny jest jedynie auth...

Jezeli chodzi o przeladowywanie strony to firebug nie wskazuje na jakies redirecty, laduje sie strona tylko raz...Paweł Ługowski edytował(a) ten post dnia 27.11.10 o godzinie 11:53
Kamil Kosiński

Kamil Kosiński CTO w
DobryMechanik.pl

Temat: Problem z helperem Session

przykro mi. bez kodu i bazy nic wiecej nie wymysle
Marcin B.

Marcin B. Webdirector,
Wspólwłasciciel
Contip.net

Temat: Problem z helperem Session

Edit: późno było i jakieś bzdury napisałem :)

Jednak wydaje mi się, że to to co sugeruje Kamil, możliwe, że się robi redirect, przez co czyści wiadomości w sesji.Marcin B. edytował(a) ten post dnia 30.11.10 o godzinie 00:19

konto usunięte

Temat: Problem z helperem Session

Być może twój problem opisany jest tutaj: http://book.cakephp.org/view/1572/New-features-in-Cake...

Zamiast $session->flash() zastosuj $this->Session->flash() w layout.
Kamil Kosiński

Kamil Kosiński CTO w
DobryMechanik.pl

Temat: Problem z helperem Session

Zamiast $session->flash() zastosuj $this->Session->flash() w layout.

to, przynajmniej na razie, jest tylko dodatkowy zapis nie wykluczający dotychczasowego.

konto usunięte

Temat: Problem z helperem Session

Kamil Kosiński:
Zamiast $session->flash() zastosuj $this->Session->flash() w layout.

to, przynajmniej na razie, jest tylko dodatkowy zapis nie wykluczający dotychczasowego.

Jeśli masz na myśli równoważność tych zapisów, to masz absolutną rację - robią to samo. Jednak cytując dokument, którego link wcześniej wkleiłem:
Helpers can now be addressed at $this->Helper->func() in addition to $helper->func(). This allows view variables and helpers to share names and not create collisions.

Kiedyś miałem analogiczny problem i rozwiązaniem było właśnie odwołanie poprzez $this. Ostatecznie, gdy człowiek jest zdesperowany to każdy pomysł jest dobry - szczególnie, że sprawdzenie czy działa zajmie w tym przypadku kilka sekund.:)
Kamil Kosiński

Kamil Kosiński CTO w
DobryMechanik.pl

Temat: Problem z helperem Session

Helpers can now be addressed at $this->Helper->func() in addition to $helper->func(). This allows view variables and helpers to share names and not create collisions.

Zakładam, że nie przypisywał do widoku nic poda nazwą session ;)

Kiedyś miałem analogiczny problem i rozwiązaniem było właśnie odwołanie poprzez $this.

O, a to chętnie bym poznał szczegóły, bo nie się takie problemy nie zdarzały.

Ostatecznie, gdy człowiek jest zdesperowany to każdy pomysł jest dobry - szczególnie, że sprawdzenie czy działa zajmie w tym przypadku kilka sekund.:)

Racja.Kamil Kosiński edytował(a) ten post dnia 30.11.10 o godzinie 23:08

Następna dyskusja:

Auth Component problem




Wyślij zaproszenie do