2013-12-09 3 views
1

Я обновляю постоянный процесс входа, который я использовал на нескольких других сайтах для работы с codeigniter, и хотел бы получить некоторые мнения о том, как наилучшим образом справиться с этой ситуацией, или если есть что-то, что я могу игнорировать.Пользовательская библиотека Codeigniter или другое решение?

До сих пор я получил расширение класса контроллера, чтобы определить, был ли пользователь уже зарегистрирован (используя библиотеку сессий codeigniters), а затем, если пользователь не выполнил вход в систему, я хочу определить, есть ли у них постоянный файл cookie, хранящийся на их машине. Если они это сделают, я пройду процесс регистрации пользователя с помощью своего временного пароля (вместе с сбросом временного пароля и повторным созданием их постоянного файла cookie по соображениям безопасности). Это все хорошо.

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

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

+0

Помогло ли мое решение? –

+1

Очень. Я принял это как ответ на свой пост. – commanderZiltoid

ответ

1

Прекрасно подходит для вызова других библиотек и моделей в пределах вашей собственной библиотеки. Однако для вызова и установки моделей/библиотек вы не можете использовать обычную модель $this (т. Е. Эта-> load-> («некоторая модель») в библиотеке.

Вам необходимо использовать $CI. Для этого установите переменную в начале вашей функции (из того, что я помню, это должно быть в вашей функции, а не в конструкции). Затем вы можете назвать модели/библиотеки так же, как и в контроллере. Пример:

<?php if (!defined('BASEPATH')) exit('No direct script access allowed'); 

class Login_auth { 

    function __construct() { 

    } 

    function run() { 

     $CI =& get_instance(); 

     $CI->load->model('some-model'); 
     $CI->load->library('some-library'); 

     .... 

    } 
} 
0

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

Смежные вопросы