Если подумать, то сессия это не кеш. Не надо её использовать не по назначению. Вот в кеше хранить политики доступа — богоугодно.
Я считаю достаточно того, что пользователь идентифицирован через сессию. Остальное к сессии не относится. И вообще, ты уже добился чтобы всё работало, что взялся за "оптимизацию"? Преждевременная оптимизация — зло. Так только отсрачивается результат и появляются ненужные уровни сложности.
пока еще не добился то занят то некогда, решил вчера взяться, просто я делаю админку, из-за этого и спрашиваю, когда сохранять сессию админа в начале или после авторизации пользователя) А вообще да я еще не добился того чего я хочу)
Авторизация это разрешение на действие. Похоже ты пытаешся перепрыгнуть через несколько ступеней в своём обучении. Так не получится. Нет никакой специальной "сессии админа". Ты же пилишь роли, вроде должен это понимать. Ты идентифицировал пользователя, используй его идентификатор чтобы понять авторизован он на действие или нет. Для этого у тебя есть информация в базе. Тебе незачем иметь в сессии больше чем один только id пользователя. id и запрошенное_действие это входящие параметры функции, на выходе должен быть ответ "да, имеет право" или "нет, не имеет". Не отвлекайся на сессии и как много можно в них сохранить. Напиши пошаговый план: - реализовать вход по логину и паролю и сохранение идентификатора в сессии или куке. это будет "аутентификация" и "идентификация". - проверять залогинен ли пользователь на произвольной странице (пока без ролей), чтобы дать / не дать ему доступ. это назвается "авторизация" - проверять есть ли у пользователя разрешение на конкретное действие через таблицы ролей и разрешений. это называется "авторизация на базе ролей" каждый пункт можно разбить ещё мельче.
если я дошел до админки, это означает что с регистрацией я уже разобрался, а вот дошел до админки возникли вопросы.
Ну тогда ты молодец и помощь тебе не нужна. А то мне кажется что это с моей т.з. ересь. Но раздувать флейм и доказывать что у тебя ничего нет я не хочу.
Спасибо дружище за помощь, сделаю таким образом. Описание логики: 1. При авторизации на сайт мы проверяем всего лишь логин и пароль, при удачной проверке добавляем ID пользователя в сессию и редирект его в ЛК. 2. Допустим при просмотре закрытой странице проверяем существует ли ID в сессии, если true мы можем сделать запрос на проверку роли и доступности полномочий если проходит все проверки разрешаем ему доступ к защищенной странице. 3. Доступ к админке можно сделать аналогично с пунктом 2 но при этом мы можем сохранить сессию админа(но не обязательно) т.к. мы проверяем роль и разрешения для ролей Вроде как все. Теперь такой вопрос, есть к примеру 2 запроса. Возвращаем объект(роли) соответствующие полномочия: PHP: $res = $this -> db -> sel(" SELECT `t2`.`perm_desc` FROM `permission_role` as `t1` JOIN `permissions` as `t2` ON `t1`.`perm_id` = `t2`.`perm_id` WHERE `t1`.`role_id` = ?", [ $role_id ], true ); Наполняем объект roles соответствующими разрешениями: PHP: $res = $this -> db -> sel(" SELECT `t1`.`role_id`, `t2`.`role_name` FROM `users_role` as `t1` JOIN `roles` as `t2` ON `t1`.`role_id` = `t2`.`role_id` WHERE `t1`.`user_id` = ?", [ $uid ], true ); Стоит ли делать третий запрос допустим, возвращаем роль пользователя? PHP: $this -> db -> sel(' SELECT `roles`.`role_id`, `roles`.`role_name` FROM `roles` JOIN `users_role` ON `users_role`.`role_id` = `roles`.`role_id` JOIN `users` ON `users`.`user_id` = `users_role`.`user_id` WHERE `users`.`user_id` = ?', [ (int) $uid ], false ); Спасибо!