Когда дело доходит до Ajax в рамках MVC Framework, я обычно имею в виду, что каждая функция имеет указанное ключевое слово, такое как fetch/set. что-то вроде этого
class Users extends Controller
{
public function Fetch($id){}
public function Create(){}
public function Update($id){}
public function Remove($id){}
}
Чтобы ответить на ваш вопрос: да
Задача контроллера принимает решения, так что вы бы выполнить проверку подлинности и т.д. внутри контроллера в целях безопасности.
Подумайте об этом таким образом, вы бы не использовали один и тот же контроллер для изменения записей в своем администрировании, как и в вашем пользовательском интерфейсе, но вы бы использовали те же модели.
Модели должны использоваться в большем количестве мест, чем только передняя часть, поэтому вы не ставите проверку сеанса, проверку ввода в методах модели, поскольку вы выполняете различные проверки в зависимости от местоположения, в котором происходит действие.
Ваш контроллер интерфейс будет иметь что-то вдоль линий:
public function Fetch($id)
{
if($this->session->get_userdata("auth_level") & USER_AUTH_LEVEL_READ)
{
//Show data
}
}
где, как ваша администрация будет иметь:
public function Fetch($id)
{
if($this->session->get_userdata("auth_level") & IS_ADMINISTRATOR)
{
//Show data
}
}
, если вы поместите тот же чек в вашей модели, то вы бы создать несколько моделей, которые будут возвращать одни и те же данные независимо от местоположения.
OK, отлично, спасибо за проверку работоспособности. У меня также есть методы «более высокого уровня» контроллера, многие из которых используют несколько таких «полезных» методов, но, похоже, их все равно следует отделить для индивидуального доступа по вызовам XHR. –