Проверka pristupa + kešabilnost
Proveravači pristupa za rutu, hook_entity_access() i sve što treba da vrati objekat AccessResultInterface, moraju dodati odgovarajuće metapodatke kešabilnosti.
Ako još niste čitali, pogledajte cache tags, cache contexts i max-age.
Parametri provere pristupa
Sistem za proveru pristupa će dobiti različite parametre – najmanje korisnički nalog (AccountInterface) i često objekat. Zatim donosi odluku na osnovu osobina tih parametara.
Kešabilna zavisnost od $parameter treba biti dodata ako promena bilo koje osobine tog parametra menja rezultat pristupa.
Na primer:
$access_result = AccessResult::allowedIf($node->isPublished()) // Rezultat pristupa zavisi od svojstva objekta koje može da se promeni: to je kešabilna zavisnost. ->addCacheableDependency($node);
Još jedan čest slučaj je kada rezultat pristupa zavisi od svojstva koje se ne može menjati (obično identifikator, UUID). Na primer, dozvoliti pristup ako je dati korisnički nalog vlasnik objekta:
$access_result = AccessResult::allowedIf($node->getOwnerId() === $account->id()) // Rezultat pristupa zavisi od vlasnika noda, koji može da se promeni. ->addCacheableDependency($node); // Rezultat pristupa takođe zavisi od korisničkog naloga, a ID korisničkog naloga se nikada ne menja. Zato ne treba dodavati $account kao kešabilnu zavisnost. // Ali, ako je $account trenutni korisnik, a ne neki fiksirani korisnik, takođe moramo osigurati da se kešira po korisniku, kako ne bismo pokretali proveru pristupa jednom i ponovo koristili rezultat za sve korisnike. if ($account->id() === \Drupal::currentUser()->id()) { $access_result->cachePerUser(); }
Drupal’s online documentation is © 2000-2020 by the individual contributors and can be used in accordance with the Creative Commons License, Attribution-ShareAlike 2.0. PHP code is distributed under the GNU General Public License.