Samovolné odhlašování uživatelů

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
dog.big
Člen | 49
+
0
-

Zdravím,
delší dobu bojuji s tím, že se mi samovolně odhlašují uživatelé při neaktivitě, přitom mám konfigurací nastavenou platnost na 14 dnů. Nette 2.1. Děkuji za pomoc.

Pardon za nové založení tématu, dnes fórko nějak zlobí…

Authenticator – mluví sám za sebe

<?php

use Nette\Security as NS;

class Authenticator implements NS\IAuthenticator
{
    /**
     * Autorizace uživatele
     * @param  array
     * @return Nette\Security\Identity
     * @throws Nette\Security\AuthenticationException
     */

    public function authenticate(array $credentials)
    {
        list($username, $password) = $credentials;

        // will select the right row

        $fluent = dibi::select('*')
                ->from(UsersManager::TABLE)
                ->where('username=%s', $username);

        $row = $fluent->fetch();


        // check, if the user exist
        if (!$row) {
            throw new NS\AuthenticationException("Uživatel '$username'
                    nenalezen.", self::IDENTITY_NOT_FOUND);
        }

        // check, if the provided password is right againts hash
        if ($row->password !== $this->calculateHash($password)) {
            throw new NS\AuthenticationException("Nesprávné heslo.",
                    self::INVALID_CREDENTIAL);
        }

        unset($row->password);
        return new NS\Identity($row->id, $row->acl, $row);
    }

    public function calculateHash($password)
    {
        return md5($password . str_repeat('CENSOREDcensored', 10));
    }
}

Konfigurace platnosti sessions v config.neon

common:
	nette:
		session:
			autoStart: smart
			expiration: 14 days
dog.big
Člen | 49
+
0
-

Jinak odpověď na dotaz, mám nastaveno pro uživatele v kódu pro úspěšný login (poznámka: v bootstrapu již nic nemám – špatně?):

$user->setExpiration('+ 7 days', false);
leninzprahy
Člen | 150
+
0
-

Na kolik máš nastaveno session.gc-maxlifetime?

edit:
Ale, pokud to nastavíš na víc, než je maxlifetime, mělo vy to vyhodit varování, viz https://github.com/…nSection.php#L197

Editoval leninzprahy (22. 1. 2014 15:33)

Barbarossa
Člen | 74
+
0
-

Ahoj,
mám stejný problém. I když mám nastavenou expiraci až do zavření prohlížeče nebo třeba 7 dní, tak po určitém čase (řek bych že náhodném) dojde k odhlášení.
LogoutReason vrací v tomto případě NULL.

iguana007
Člen | 970
+
0
-

Ono nemusí být problém pouze v nastavení sessions apod., ale odhlášení může způsobit třeba i špatně implementovaný multi uploader založený na flash instanci (flash změní session id a tím odhlásí uživatele)…

duke
Člen | 650
+
0
-

A nezpůsobuje ti to jiná aplikace, která používá stejný adresář pro sessions?
Pokud ano, vyřešíš to přidáním direktivy save_path do konfigurace session v config.neon.

David Kudera
Člen | 455
+
+2
-

Nemůže to být tímto? U mě to zabralo..

Čili řešení to, co píše @duke, jen jiný důvod

Edit: no jiný vlastně ani ne…

Editoval David Kudera (13. 11. 2014 14:06)

Barbarossa
Člen | 74
+
0
-

David Kudera napsal(a):

Nemůže to být tímto? U mě to zabralo..

Čili řešení to, co píše @duke, jen jiný důvod

Edit: no jiný vlastně ani ne…

Díky, to je přesně ono.