CodeIgniter: хранить больше информации в сессии - PullRequest
0 голосов
/ 27 февраля 2010

это функция, которая у меня есть, в моем контроллере входа в систему, которая сохраняет данные в массив и затем устанавливает userdata

  function validate_credentials()
   {
   $this->load->model('membership_model');
   $query = $this->membership_model->validate();

   if($query):
    $data = array(
     'username' => $this->input->post('username'),
     //add usertype
     //add email
     //add deposit money
     'is_logged_in' => true
    );
    $this->session->set_userdata($data);
    //should redirect to last view
    redirect('home/index');
   else:
    $this->index();
   endif;
  }// end of validate_credentials()

Я хотел бы хранить больше информации, такой как тип пользователя, электронная почта, депо и т. Д. ... данные хранятся в базе данных. Как я могу получить данные от модели к контроллеру? или это не рекомендуется?

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

1 Ответ

0 голосов
/ 27 февраля 2010

Вы можете использовать обычную обработку сеанса CI, выполненную в CI.

$this->session->set_userdata('usertype', 'admin');

Для проверки типа пользователя. У меня обычно есть класс аутентификации, который проверяет, является ли пользователь, вошедший в систему, администратором. например,

function logged_in($role = NULL)
{
    if ( ! $this->CI->session->userdata('logged_in'))
    {
        return FALSE;
    }

    if ($this->CI->user->has_role($role, $this->CI->session->userdata('user_id')))
    {
        return TRUE;
    }
    return FALSE;
} // function restrict()

По поводу сохранения информации, используя сеанс, он, вероятно, не самый безопасный. Я обычно рекомендую проверять информацию пользователя на лету, а не хранить все данные в сеансе CI.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...