nečekané chovaní při přihlašení

vlkodlak
Člen | 160
+
0
-

narazil jsem na tento efekt s přihlašováním, ale nedává mi to smysl proč

mám standartní formulář pro přihlášení:

<?php

declare(strict_types=1);

namespace App\Forms;

use Nette;
use Nette\Application\UI\Form;
use Nette\Security\User;

final class SignInFormFactory
{

   use Nette\SmartObject;

   /** @var FormFactory */
   private $factory;

   /** @var User */
   private $user;

   public function __construct(FormFactory $factory, User $user)
   {
      $this->factory	 = $factory;
      $this->user	 = $user;
   }

   public function create(callable $onSuccess): Form
   {
      $form = $this->factory->create();
      $form->addText('username', 'Username:')
	      ->setHtmlAttribute('class', 'bigNumbers')
	      ->setRequired('Please enter your username.');

      $form->addPassword('password', 'Password:')
	      ->setRequired('Please enter your password.');

      $form->addCheckbox('remember', 'Keep me signed in');

      $form->addSubmit('send', 'Sign in');

      $form->onSuccess[] = function (Form $form, \stdClass $values) use ($onSuccess): void {
	 try {
	    $this->user->setExpiration($values->remember ? '14 days' : '20 minutes');
	    $this->user->login($values->username, $values->password);
	 } catch (Nette\Security\AuthenticationException $e) {
	    $form->addError('The username or password you entered is incorrect.');
	    return;
	 }
	 $onSuccess();
      };

      return $form;
   }

}

v konfiguračním souboru

session:
   expiration: 14 days
   savePath: "%tempDir%/sessions"
   autoStart: true # výchozí hodnota je 'smart'

a když se přihlásím autorizace proběhne a pokračuje se dál, ale pokud z nenadaní zavřu okno a opět ho otevřu jsem stále přihlášeny, předpokládám je to kvůli těm to 20 minutám?

$this->user->setExpiration($values->remember ? '14 days' : '20 minutes');

no ale i když dam na stránce odhlásit, zavřu stránku, opět jí otevřu zjistím, že jsem stále přihlášený a tomu nerozumím, proč? kde to mohu upravit?

David Grudl
Nette Core | 8107
+
0
-

Otevírání a zavírání stránek by nemělo mít na nic vliv. Vlastně se ptáš, proč po odhlášení zůstaneš přihlášený, tak ukaž kód, kterým se odhlašuješ.

vlkodlak
Člen | 160
+
0
-

ten je také standartní bez úprav

public function actionOut(): void
{
   $this->getUser()->logout();
}

EDIT:
v latte

<div class="col-md-10 col-md-offset-1">
   <div class="infologin"><b>User:</b> {$infologin} ::  <b><a n:href="Sign:out">Logout</a></b></div>
</div>

Editoval vlkodlak (31. 3. 2021 13:59)

David Grudl
Nette Core | 8107
+
0
-

A když na to klikneš, tak zůstáváš dál přihlášený? Opravdu se ten kód spustí?

vlkodlak
Člen | 160
+
0
-

David Grudl napsal(a):

A když na to klikneš, tak zůstáváš dál přihlášený? Opravdu se ten kód spustí?

je pravdou, že v testu panáček v ladence změní barvu ze zelené na šedou, což možná je to co mé mate a mylně předpokládám v odhlášení, ale s kurzorem vidím přihlášeného uživatele.

Prosím, jak tedy uživatele správně odhlásím nebo přeznějí, kterým směrem zaměřit mé pátraní?

Ondřej Kubíček
Člen | 494
+
+2
-

podle mě se ti jen nesmazala identita, což tě asi zmátlo
uprav to na $this->getUser()->logout(true);

David Grudl
Nette Core | 8107
+
+2
-
vlkodlak
Člen | 160
+
0
-

@OndřejKubíček a @DavidGrudl děkuji Vám za pomoc a nápovědu