LINUX.ORG.RU

Symfony security module

 ,


0

1

Всем привет, начал разбираться с этим модулем, даже есть определенный прогресс, но пока в пределах сущности user. Выходит при логине модуль сам в сессию кладет этого юзера, ну вот вопрос - у меня есть две группы пользователей, естественно это две отдельные таблицы в базе с fk на таблицу user, как я понимаю модуль кладет чисто юзера, а мне, к примеру, в шапке сайта нужно вывести информацию не только пользователя, а и некоторые данные для этой группы, то ли самому как-то во время логина вытягивать с базы и класть в сессию эти данные, толи модуль и доктрина мне тут помогут?


Как вообще в голову пришло ложить это в сессию? Тебе нужно просто показать какие-то данные, так просто доставай из базы и показывай. Если смущает, что они будут дёргаться из базы каждый раз и/или на это будет уходить много времени, то кэширование никто не отменял.

Kilte ★★★★★ ()
Ответ на: комментарий от Kilte

если память не подводит то в сессии по умолчанию не объект user а его credentional (логин/пасс) а потом на основании этих данных пытается найти пользователя в бд.

anthill ()
Последнее исправление: anthill (всего исправлений: 1)

если в токене лежит entity пользователя, то я не вижу проблем достать по связям все необходимые данные

anthill ()
Ответ на: комментарий от anthill

Ничего не понял, что ты хотел этим сказать. Если он хочет достать пользователя, надо получить токен из хранилища, проверить, что он не null и получить от него пользователя, которого тоже надо проверить на null.

Как-то так короче:

$token = $tokenStorage->getToken();
if ($token instanceof TokenInterface) {
    $user = $token->getUser();
    if ($user instanceof UserInterface) {
        $username = $user->getUsername();
    }
}

Сам токен ЕМНИП хранится в сессии в сериализованном виде. Там вообще куча всего происходит, но я не думаю, что это необходимо знать. Хотя просто разобраться, как это всё устроено должно быть интересно. Но я до конца так и не осилил. Уж очень монструозно.

Kilte ★★★★★ ()

у меня есть две группы пользователей, естественно это две отдельные таблицы в базе

ЩИТО

anonymous ()
Ответ на: комментарий от Kilte

Еще вот такой вопрос, делал по примеру с документации - есть выходит два метода: login, login_check, мне нужно во время удачного логина записывать данные в таблицу логов, мол юзер зашел во столько-то с такого IP, поместил код в login_check - не работает, в login - тоже помещать не вариант, как лучше всего отхендлить это процесс, чтобы раз писать в базу во время логина?

Berdin ()
Ответ на: комментарий от Berdin

Если честно, я с full-stack фреймворком не работал, а только ковырял отдельные компоненты, потому конкретно ничего не подскажу.

Тебе нужно запилить собственный хендлер и подключить его. Конечно же для начала достаточно просто отнаследоваться от дефолтного.

Посмотри как это предлагают сделать здесь например: http://stackoverflow.com/questions/15918617/symfony2-extending-defaultauthent...

А лучше зягляни в бандл и посмотри как сделано там. Ну и по аналогии переопределяешь.

В конце-концов копай исходники для большего понимания:

https://github.com/symfony/Security/blob/master/Http/Authentication/Authentic...

При должном усердии всё получится. Это не так уж и сложно, как кажется на первый взгляд.

Kilte ★★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.