Variable $userLoggedIn ist nicht vertraulich

Ich muss im Shopware überprüfen ob der Benutzer eingelogt ist oder nicht.

Mit variable $userLoggedIn dacthe ich es funktioniert alles in Ordnung.

Aber wenn ich weg bin und komme nach eine Stunde zurück der benutzer ist eingeloggt aber die variable $userLoggedIn gibt/ist FALSE.

Wie kann das sein? Ich verstehe es nicht… Kann jemand das erklären?

Also es ist wegen cookie expiration…

Das muss von Shopware Entwickler erledigt sein… Wenn Benutzer cookie für Anmeldung abgelaufen ist und Benutzer macht einfach refresh/reload,

Benutzer Name steht noch immer oben drauf, obwohl der Benutzer ist, tatsächlich nicht mehr eingeloggt!

Hey,

was steckt denn bei dir hinter der Variable $userLoggedIn ? Standardmäßig ist die Variable ja nicht in Shopware drin.

  • Wird da über Shopware()->Modules()->Admin()->sCheckUser(); geprüft ?

  • Oder fragst du die id über Shopware()->Session() ab?

  • andere wege?

Es kann gut sein dass es einfach an der Session lifetime liegt.

 

VG

Ich habe es zufällig entdeckt mit diesem Code

 

    {if $userLoggedIn}
        {block name='frontend_detail_comment_post'}
            
                {include file="frontend/detail/comment/form.tpl"}
            
        {/block}
    {else}
        Product Bewerten
        
    {/if}

Ich komme eine Stunde später und mache ein refresh und da gibt es Knopf/Link “Product Bewerten” statt die Bewertung Form. Also ich war nicht mehr eingeloggt aber oben steht mein Name drauf so als ich eingeloggt bin.

Das kann man leicht reproduzieren; einfach einloggen und den cookie “session-1” löschen die Seite neu laden und dein Name steht oben aber du bist nicht eingeloggt!

Hey,

also ich kann das auf diese weise nicht reproduzieren, ich bin dann einfach ausgeloggt wenn der Session Cookie weg ist.

Wenn du die möglichkeit hast / dein Hoster setz die cookie lifetime in den PHP Konfigurationen höher.

http://www.php.net/manual/en/session.configuration.php#ini.session.cookie-lifetime

VG

 

Ja du bist einfach ausgeloggt aber dann nach einem refresh dein Name sollte nicht mehr oben stehen im Navbar! Das ist das Problem!

Hallo ertuzio,

dein Problem dürfte hier der SW-HTTP-Cache sein. Die Variable wird nicht neu berechnet um Resourcen zu sparen. Der sinnvollste Ausweg scheint mir zu sein, dass du diesen Teil in ein Widget auslagerst, denn das wird auch mit HTTP-Cache neu berechnet. Als Vorbild kannst du den Warenkorb im Header nehmen - der ist aus genau diesem Grund als Widget umgesetzt.

Viele Grüße
Marcus