Főoldal   Súgó Bejelentkezés Regisztráció  
Üdvözlünk, Vendég. Kérlek jelentkezz be vagy regisztrálj.

Jelentkezz be a felhasználóneveddel, jelszavaddal és add meg a munkamenet hosszát
1 évet fizetsz kettőt kapsz a CakePHP tárhely programban!
Silver csomag pl.: 1000MB tárhely, MySQL vagy PostgreSQL.
.hu domain címmel - 12.900 Ft + Áfa / 2év
Hírek: Exkluzív bejelentés CSAK CakePHP.hu fórumlátogatóknak!  Általános blabla...
Oldalak: [1]   Le
Nyomtatás
Téma: Hitelesítés Kilépés  (Megtekintve 151 alkalommal)
« Dátum: 2011. November 04. - 14:12:38 »
kisspepe Nem elérhető
Kölyök tag

Profil megtekintése E-mail
**
Hozzászólások: 88



Sziasztok!

A kézikönyv alapján megcsináltam a hitelesítést. A belépés az tökéletesen működik. Azonban a kilépéssel vannak problémáim.

Controller:
Kód:
function logout() {
$this->redirect($this->Auth->logout());
}

View:
Kód:
if($session->read('Auth')) {
echo $this->Form->create('User', array('url' => array('controller' => 'users', 'action' => 'logout')));
?>
<fieldset>
<legend><?php __('Logged'?> </legend>
<div id = "logged_in_user">
Be vagy jelentkezve: <br />
<?php print $session->read('Auth.User.username');?>
<br /> néven!
</div>
</fieldset>
<?php
echo $this->Form->button(__('Logout'true), array('type'=>'submit''name'=>'logout'));
$this->Form->end();


A problémám az, ha rákattintok a Logout gombra, akkor a böngésző elkezd tölteni, és ott maradok azon az oldalon, ahol voltam, viszont bejelentkezve. Nem léptet ki.

Mi lehet ennek az oka?
Naplózva
« Válasz #1 Dátum: 2011. November 04. - 14:46:48 »
sipiatti Nem elérhető
Újonc

Profil megtekintése E-mail
*
Hozzászólások: 43



valószínű redirect hurok.
vedd ki átmenetileg a $this->redirect($this->Auth->logout()); sort, mit csinál?
Naplózva
« Válasz #2 Dátum: 2011. November 04. - 17:21:37 »
rrd Nem elérhető
Adminisztrátor
Teljes tag

Profil megtekintése WWW E-mail
*****
Hozzászólások: 206



Próbáld ki, hogy gomb helyett egy linked van.
Kód:
print $this->Html->link('Kilépek', '/users/logout');

Így mit csinál?
« Utoljára szerkesztve: 2011. November 04. - 17:23:57 írta rrd » Naplózva
« Válasz #3 Dátum: 2011. November 04. - 21:04:15 »
kisspepe Nem elérhető
Kölyök tag

Profil megtekintése E-mail
**
Hozzászólások: 88



Ha ki veszem a logoutból azt a sort, akkor is ugyan azt csinálja. Tölt, de semmit nem csinál. Maradok ugyan ott bejelentkezve.

Ha linket teszek ki, akkor is ugyan azt csinálja.
« Utoljára szerkesztve: 2011. November 04. - 21:11:48 írta kisspepe » Naplózva
« Válasz #4 Dátum: 2011. November 05. - 10:36:12 »
rrd Nem elérhető
Adminisztrátor
Teljes tag

Profil megtekintése WWW E-mail
*****
Hozzászólások: 206



Ha jól sejtem, akkor is ugyanez a helyzet akkor is ha közvetlen meghívod a /users/logout urlt? Ha igen, azaz akkor sem léptet ki, akkor vagy nem adtad hozzá a komponensekhez a sessiont és vagy az Auth-t és ki van kapcsolva a debug, vagy a controller before_filterben van valami gubanc.

Először kapcsold be a debugot, aztán a logout metódus első sorába tegyél egy debug($this->session); die(); párost, hívd meg a logoutot url-ből és nézd meg mi történik. Valószínűleg valami végtelen egyszerű probléma lesz.
Naplózva
« Válasz #5 Dátum: 2011. November 05. - 11:15:16 »
kisspepe Nem elérhető
Kölyök tag

Profil megtekintése E-mail
**
Hozzászólások: 88



Nos ez sem segített. A core.php-ben
Kód:
Configure::write('debug', 2);
van, tehát minden hibaüzenetet kiír.

Az app_controller.php-ben megadom a szükséges dolgokat:
Kód:
var $components = array('Acl', 'Auth', 'Session', 'Cookie', 'requestHandler');

var $helpers = array ('Html', 'Form', 'Javascript', 'Ajax', 'Session');

function beforeFilter() {
      parent::beforeFilter();

      $this->L10n = new L10n();
      $this->L10n->get('hu');
      Configure::write('Config.language', 'hu');

      $this->Auth->authorize = 'controller';
      $this->Auth->authError = __('Access denied', true);
      $this->Auth->loginError = __('The username or password is incorrect!', true);
      $this->Auth->logoutRedirect = array('controller' => 'posts', 'action' => 'index');

      $this->set('header_footer', $this->Setting->read(null, 1));
}

A users_controller.php:
Kód:
function beforeFilter() {
       parent::beforeFilter();

       $this->Auth->fields = array(
      'username' => 'email',
      'password' => 'password'
);

       $this->Auth->allow('registration');
}

function login() {
if(isset($this->params['form']['registration'])) {
$this->redirect(array('action'=>'registration'));
}

if($this->Session->read('Auth.User')) {
$this->Session->setFlash(__('You are logged in!', true));
$this->redirect('/', null, false);   
}
}

function logout() {
debug($this->session);
die();
$this->Session->setFlash(__('Good-bye', true));
$this->redirect($this->Auth->logout());
}

Ha kilépés gombra kattintok, ugyan azon az oldalon marad. Ha közvetlenül meghívom a logoutot, akkor is bejelentkezve maradok, mert meg tudok nézni olyan oldalakat, amihez csak bejelentkezve férek hozzá, viszont átdob a kezdőoldalra, de semmi hibaüzenetet nem ír.
Naplózva
« Válasz #6 Dátum: 2011. November 05. - 17:37:18 »
sipiatti Nem elérhető
Újonc

Profil megtekintése E-mail
*
Hozzászólások: 43



a logout, login action-ök be vannak adva az Auth->allow()-nak? mert ha nem, akkor redirectel loginra, de mivel logout van a sessionben küldi tovább oda, aztán kezdődik előlről.

de csak tippelek...
Naplózva
« Válasz #7 Dátum: 2011. November 05. - 17:58:19 »
kisspepe Nem elérhető
Kölyök tag

Profil megtekintése E-mail
**
Hozzászólások: 88



Nos ez érdekes.

Én úgy tudtam, hogy a login és a logout action az alapértelmezetten engedélyezettek hitelesítés nélkül.

A userController-ben betettem a $this->Auth->allow() tömbbe a logout-ot, és így mostmár működik.
Naplózva
Oldalak: [1]   Fel
Nyomtatás
Ugrás:  

2007 CakePHP Magyarország Fóruma
Powered by SMF 1.1.4 | SMF © 2006, Simple Machines LLC
Magyar fordítás: SMF Magyarország
| Üzemelteti / Hosting: Elite Media     -     Támogatóink: Loovers Szexshop | És a HHO generátor