Problém s přihlášením(Staticke ACL v modularnej aplikacii)

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

Dobrý den,
tvořím první web v Nette, a to podle tutoriálu Staticke ACL v modularnej aplikacii.

Používám verzi Nette Framework 2.0-alpha 2 pro PHP 5.3.0.

Při nasazení stránek na web mi ale skřípe přihlašování. Laděnka mi hlásí tuto chybu:
Service ‚Nette\Security\IAuthenticator‘ not found.

..$user->login($form[‚login‘]->value, $form[‚password‘]->value);

První co mě napadlo bylo nalinkovat třídu Nette\Security\IAuthenticator. Tohle, ale nepomohlo.
Nesetkal se někdo, kdo postupoval podle výše zmíněného tutoriálu, s podobným problémem?

Ještě znovu připomenu, že na localhostu mi stránky běží bezproblémů, jen v produkční verzi mám tento problém.

Asi mi něco nedochází :).

jtousek
Člen | 951
+
0
-

Nette\Security\IAuthenticator je interface, ty musíš někde v configu nastavit, která třída ti tohle rozhraní implementuje.

např. takhle to mám já: (v config.ini)

service.Nette-Security-IAuthenticator = AdminModule\Authenticator

Dále doporučuji dokumentaci.

EDIT: Že to funguje jen na localhostu může být např. tím, že v configu máš ten řádek uvedenej pouze v sekci pro localhost a ne v common.

Editoval jtousek (20. 4. 2011 12:15)

xDexter
Člen | 13
+
0
-

Díky za rychlou odpověď!

No v configu asi problém nebude, vypadá následovně:

[common]
; PHP configuration
php.date.timezone = "Europe/Prague"

; services
service.Nette-Loaders-RobotLoader.option.directory[] = %appDir%
service.Nette-Loaders-RobotLoader.option.directory[] = %libsDir%
service.Nette-Loaders-RobotLoader.run = TRUE

service.Nette-Security-IAuthorizator  = AclProj\Security\Acl
service.Nette-Security-IAuthenticator = AclProj\Security\Authenticator

[production]
atd.

a ty namespace\trida jsou zapsány dobře, v common sekci to taky mám.

Nějaký ještě nápad?

srigi
Nette Blogger | 558
+
0
-

A mas pritomne triedy AclProj\Security\Acl a AclProj\Security\Authenticator? Skus si stiahnut .zip archiv.

xDexter
Člen | 13
+
0
-

Ano mám, no moje adresářová struktura je taková:

+ app
  - AdminModule
    - forms
      LoginForm.php
    - presenters
      AuthPresenter.php
  + FrontModule
  + .....
+ css
+ data
+ images
+ js
+ libs
  - AclProj
    - Security
      Acl.php
      Authenticator.php
+ log
+ temp
.htaccess
index.php
web.config

No nevím, kde je zakopaný pes :)

Editoval xDexter (20. 4. 2011 18:17)

craz
Člen | 34
+
0
-

Mne pomohlo presunut zlozku AclProj do zlozky app.

xDexter
Člen | 13
+
0
-

craz napsal(a):

Mne pomohlo presunut zlozku AclProj do zlozky app.

Mně bohužel ne :( Ale myslím si, že by to mělo být jedno v jakém je to adresáři, ale možná se mýlím.

srigi
Nette Blogger | 558
+
0
-

Mozes sem hodit komplet vystup ladenky (stranku)? Teda nie priamo do fora, ale daj link alebo zabal do zipu a niekam uploadni.

Editoval srigi (21. 4. 2011 12:37)

xDexter
Člen | 13
+
0
-

srigi napsal(a):

Mozes sem hodit komplet vystup ladenky (stranku)? Teda nie priamo do fora, ale daj link alebo zabal do zipu a niekam uploadni.

takže výpis je zde

díky za ochotu!

studna
Člen | 181
+
0
-

V laděnce (Environment > Included Files) nikde nevidím načítání Authenticator.php (možná jsem slepý), zkus promazat cache.

xDexter
Člen | 13
+
0
-

Problém vyřešen! Config.ini jsem změnil následovně:

[common]
; PHP configuration
php.date.timezone = "Europe/Prague"

; services
service.Nette-Loaders-RobotLoader.option.directory[] = %appDir%
service.Nette-Loaders-RobotLoader.option.directory[] = %libsDir%
service.Nette-Loaders-RobotLoader.run = TRUE

service.Nette-Security-IAuthorizator  = AclProj\Security\Acl
service.Nette-Security-IAuthenticator = AclProj\Security\Authenticator

[production < common]
atd.

V sekci production jsem nedědil věci od common! Díky všem za příspěvky, díky Bernard Williams za tuto informaci!

Editoval xDexter (22. 4. 2011 16:29)