2010-12-03 7 views
2

Ich benutze die Codeigniter Tank Auth-Bibliothek für die Arbeit mit Benutzern und es hat gut funktioniert. Jedes Mal, wenn ich versuche, jeden Controller für den Zugriff auf die Funktion überprüft, ob der Benutzer wie folgt angemeldet:Codeigniter Tank Auth - Benutzer wird aus keinem ersichtlichen Grund ausgeloggt

if($this->tank_auth->is_logged_in()) { 

Wenn es angemeldet ist, ich das Modell laden, aber wenn nicht, kann ich eine Umleitung auf die Login-Seite. Es hat einen Monat lang so funktioniert, aber jetzt erweitere ich meine Anwendung und baue einige andere Controller, die die gleiche Technik verwenden, aber die Dateien befinden sich in einem anderen Ordner. Die vorherige funktionierende Anwendung funktioniert immer noch gut, aber in dieser App aus dem neuen Ordner (es ist im Grunde ein neues Modul für diese Anwendung, verwendet die gleiche Login-Seite, aber leitet je nach Benutzerauswahl des Moduls anders) Ich kann mich korrekt anmelden, kann ich ein jede Anfrage an den Controller ohne Probleme, aber irgendwann sagt es mir, der Benutzer ist nicht eingeloggt. Es ist nicht die Sitzung abgelaufen oder etwas, es ist wie ich jetzt eine Anfrage machen, meine Sitzung und die nächste um 3 Sekunden erweitern Intervall lässt den Benutzer abmelden ... Ich habe mit meinen neuen Controllern nichts anderes gemacht, aber nach einer Weile dauert es manchmal 5 Minuten, manchmal 15 Minuten, es meldet sich ab ... Ich weiß nicht warum, Ist etwas mit meiner Sitzung unordentlich? Ich benutze keine Sitzung für etwas anderes ...

Jeder weiß, worum es geht? Oder irgendeinen Vorschlag? Ich kann weitere Details angeben, wenn gewünscht.

Vielen Dank.

EDIT: Das neue Modul besteht in mehreren Controllern in dem gleichen Codeigniter instalieren, es funktioniert mit der gleichen CI config gleicher Tank Auth Bibliothek und die Funktionen sind mit dem Hauptanforderung Controller wie folgt kopiert:

class Requests extends Controller 
{ 
    function __construct() 

    { 
     parent::__construct(); 

     $this->load->helper(array('form', 'url')); 
     $this->load->helper('date'); 
     $this->load->library('form_validation'); 
     $this->load->library('tank_auth'); 
    } 

.............. 
more functions 
.............. 

    function getServices() { /// One of the functions that the new module uses 
      if (!$this->tank_auth->is_logged_in()) { 
       return; 
      } else { 
       $this->load->model('requests/getServices'); 
       $data['tid'] = $_POST['tid']; 
       $this->getServices->showData($data); 
      } 

     } 

Antwort

0

Ich habe mit meiner Sitzung in einer Bild-Upload-Funktion, die ich in einer anderen App verwendet. Ich habe diese Sitzungszeilen gelöscht und jetzt funktioniert es wie es sein sollte. Der Session-Code war PHP-nativer $ _SESSION-Code, falls sich jemand fragen sollte.

Danke.

+0

Ich habe das gleiche Problem von einem Legacy-Code, an dem ich arbeite. Kannst du genau beschreiben, was du getan hast? Haben Sie die Verwendung von $ _SESSION direkt im Code entfernt? – Strategist

2

Ich vermute, dass die Verzögerung beim Verschwinden des Cookies etwas mit $ config ['time_to_update'] zu tun hat (Standard ist 300 Sekunden).

Cookies werden nur alle 5 Minuten aktualisiert (neu gesetzt), wenn keine Sitzungsvariablen geändert werden. Es kann also sein, dass der Cookie aus der Sicht des neuen Teils der Anwendung ungültig wird, aber die Session-Klasse merkt es erst, wenn die 300 Sekunden vergangen sind, an diesem Punkt wird es gelöscht und der Benutzer wird ausgeloggt .

Können Sie detaillierter angeben, wo sich neuer Code befindet. Ist es in der gleichen CodeIgniter-Installation? etc.

+0

hinzugefügt weitere Informationen, danke. –