Я работаю с домашним MVC-ориентированным фреймворком, и мне нужно реализовать страницу входа.
На данный момент все работает так, что каждый контроллер, которому требуется авторизация, вызывает свой метод authorize()
, который в псевдокоде выглядит следующим образом:
protected function authorize() {
if (logged in) {
return true;
}
if (login form submitted) {
authorize/validate username/password
if (!valid) {
render login form
return false;
} else {
mark user logged in
return true;
}
} else {
render login form
return false;
}
}
Я бы хотел переместить эту логику в собственный LoginController, но для этого потребовалось бы «запомнить» исходный запрос и сохранить все данные POST и GET, а затем выполнить перенаправление, чтобы попасть в LoginController.
Каков наилучший способ входа пользователя с точки зрения хорошего дизайна MVC и принципа KISS?