2010-07-27 2 views
9

Ich erstelle ein Magento-Modul. Innerhalb des Controllers möchte ich überprüfen, ob ein Admin angemeldet ist oder nicht. Der Controller ist also nur zugänglich, wenn ein eingeloggter Admin vorhanden ist.Magento: Wie überprüft man, ob Admin in einem Modul-Controller angemeldet ist?

Ich versuche diesen Code auf meinem Controller zu verwenden.

Mage::getSingleton('core/session', array('name' => 'adminhtml')); 
$session = Mage::getSingleton('admin/session'); 

// Use the 'admin/session' object to check loggedIn status 
if ($session->isLoggedIn()) { 
    echo "logged in"; 
} else { 
    echo "not logged in"; 
} 

aber ich bekomme immer "nicht eingeloggt", auch wenn ich schon bei Magento Admin eingeloggt bin.

Kann mir jemand helfen, dieses Problem zu lösen? jede Hilfe wird sehr geschätzt. Danke

+0

Ich habe die Das gleiche Problem in einem tiny_mce Integration Plugin – lrkwz

+0

funktioniert perfekt :) – jruzafa

+0

es funktioniert perfekt für mich http://magentocodes.blogspot.in/2015/10/how-to-check-admin-is-logged-in-o--not. html mit diesem können wir überall in Magento überprüfen. danke –

Antwort

18

Das ist wirklich seltsam. Ich benutze fast genau den gleichen Code und es funktioniert die ganze Zeit:

//get the admin session 
Mage::getSingleton('core/session', array('name'=>'adminhtml')); 

//verify if the user is logged in to the backend 
if(Mage::getSingleton('admin/session')->isLoggedIn()){ 
    //do stuff 
} 
else 
{ 
    echo "go away bad boy"; 
} 

Haben Sie versucht, var_dumping die $ Session-Variablen? Vielleicht hilft es Ihnen, auf die richtige Spur zu kommen ...

+0

Ja, ich habe versucht, var_dump die $ Session-Variable, da ist etwas in diesem, aber scheint es keine Informationen über den Login-Status. Was seltsam ist, habe ich das auf einem anderen Modul versucht, und es ist Arbeit. Gibt es etwas mit der Modulkonfigurationsdatei zu tun? – Calua

+1

Interessanterweise habe ich das gleiche Problem wie Calua - aber nur manchmal. Ich habe zwei Instanzen von Magento Setup auf meinem Server, eine ist die Produktionsversion (bei mydomain.com) und die andere ist eine Staging-Instanz (bei stage.mydomain.com). Die obigen Code-Snippets funktionieren auf der Bühne, aber nicht in der Produktion. Nicht sicher warum. Es könnte irgendwo eine obskure Einstellung geben, aber das einzige, was ich weiß, ist anders, dass meine Produktion ssl hat und meine Bühne nicht. Seltsam. Ich frage mich, ob jemand das Thema so repliziert hat? – shaune

+0

Das hat für mich funktioniert ... – ravisoni

2

Stellen Sie sicher, dass der adminhtml-Controller Ihres Moduls Mage_Adminhtml_Controller_Action erweitert. Sie können nicht überprüfen, ob ein Administrator von einem Front-End-Controller angemeldet ist.

0

$user = Mage::getSingleton('admin/session');

if($user->getUser()->getUserId()) { 
    // admin logged 
} 
else { 
    // not admin logged 
} 
0

Als David Tay sagte, sollten Sie Ihren Controller aus Mage_Adminhtml_Controller_Action erweitern.
Wie auch immer, der kürzeste Weg zu überprüfen, ob Admin angemeldet wird, ist diese Hilfsmethode zu nennen:

Mage::helper('adminhtml')->getCurrentUserId(); 
Verwandte Themen