Multiple services: security.authenticator
- Dvory59
- Člen | 40
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
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(...))