Лучшие практики входа / авторизации в среде PHP MVC

Я работаю с домашней 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?

1 ответ

Решение

Я не уверен, что вы используете данные сеанса, но я бы сохранил URL PATH для сеанса. Перенаправить на новый LoginController. После успешного входа в систему перенаправьте браузер на сохраненный URL-адрес PATH, найденный в данных сеанса. Код сеанса должен быть кодом помощника / библиотеки, а не в контроллере. Убедитесь, что вы очистили URL PATH также после того, как вход выполнен.

Другие вопросы по тегам