Multiple services: security.authenticator

Dvory59
Člen | 40
+
0
-

Zdravím, omlouvám se, za tuto opakující se otázku, ale nenašel jsem na ní odpověď, které by mi pomohla.

Dělám první aplikaci, kdy jsem se dostal do části Autentifikace a po splnění dokončení mi to začalo vyhazovat chybu

Service 'security.user': Multiple services of type Nette\Security\IAuthenticator found: security.authenticator, authenticator. If you want to overwrite service security.authenticator, give it proper name.

Našel jsem si, že se jedná o dvojité požívání authenticatoru, co sem pochopil tak jeden se vytvoří po konfiguraci

security:
    users:
        admin: secret  # user 'admin', password 'secret'

A druhý je implementovaný v UserManager.

Snažil jsem se najít řešení, kdy ale potřebuji obě dvě, takže asi nemohu nic smazat, pak jsem zkoušel UserManager zaregistrovat takhle

services:
    authenticator: App\Model\UserManager

, ale taky to problém nevyřešilo. Zkoušel jsem i

class: App\Model\Security\Authenticator
      autowired: no

, ale taky nic.
Chtěl bych Vás tedy poprosit, zda-li byste měli nějaké jiné řešení situace. Za každou radu budu moc vděčný!

btw. V nějakém vláknu bylo zmíněno, že by tento problém měl být řešen přímo v článku ve žlutým obdelníku s vykřičníkem, ale asi se to za tu dobu už aktualizovalo a není to tam :(

CZechBoY
Člen | 3608
+
+1
-

Proc potrebujes 2 autentikatory?

Dvory59
Člen | 40
+
0
-

CZechBoY napsal(a):

Proc potrebujes 2 autentikatory?

Máš pravdu. Byly tam registrovaný služby už defaultně co to vyžadovaly, ale ty jsem vůbec nepoužíval. Jen jsem si to neuvědomil… Ještě v tom trochu plavu… Smazal jsem je a už to fachá. Díky a omlouvám se za spam.

CZechBoY
Člen | 3608
+
0
-

No ty si psal, že potřebuješ oba autentikátory.
Buď používej
1) konfigurační – kdy vyjmenuješ uživatele v konfiguráku
2) vlastní implementaci IAuthenticator – kdy prostě uděláš třídu implementující IAuthenticator rozhraní
3) kašli na IAuthenticator – vytvoř třídu, která po odeslání formuláře autentifikuje uživatele a v případě úspěchu zavolá $user->login(new Identity(...))