Witam,

mam dość zdaje się proste pytanie, na które nie znalazłem odpowiedzi. Otóż przy każdym żądaniu, skrypt odpytuje bazę (dokładnie 4 zapytania), o dane zalogowanego użytkownika, którymi wypełnia /model/User zamiast pobrać je z sesji :| Czy istnieje możliwość obejścia tych zbędnych zapytań (wiem, że podczas logowania mogę zapisać całe identity do sesji, i później pobrać je w findIdentity(), ale czy istniej do tego jakiś automat)?

Tak wyglądają pliki

config/web.php
  1. 'user' => [
  2. 'identityClass' => 'app\models\User',
  3. 'enableAutoLogin' => false,
  4. 'loginUrl' => ['authentication/login'],
  5. ],


models/User.php
  1. class User extends ActiveRecord implements IdentityInterface
  2. {
  3.  
  4. //....
  5.  
  6. /**
  7.   * @inheritdoc
  8.   */
  9. public static function findIdentity($id)
  10. {
  11. return static::findOne($id);
  12. }


controllers/ExampleController.php
  1. return [
  2. 'access' => [
  3. 'class' => AccessControl::className(),
  4. 'only' => ['index', 'view'],
  5. 'rules' => [
  6. [
  7. 'allow' => true,
  8. 'actions' => ['index'],
  9. 'roles' => ['?'], // sprawdza Identity, odpalając metodę User::findIdentity(), a ta odpytuje bazę danych
  10. ],
  11. [
  12. 'allow' => true,
  13. 'actions' => ['view'],
  14. 'roles' => ['@'], // sprawdza Identity, odpalając metodę User::findIdentity(), a ta odpytuje bazę danych
  15. ],
  16. ],
  17. ],
  18. ];