CakePHP 3.6: защитить внутреннюю страницу с помощью формы входа в систему - PullRequest
0 голосов
/ 26 ноября 2018

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

Это моя функция инициализации в AppController.php:

$this->loadComponent('Auth', [
                'authenticate' => [
                    'Form' => [
                        'fields' => [
                            'username' => 'email',
                            'password' => 'password'
                        ]
                    ]
                ],
                'loginAction' => [
                    'controller' => 'Users',
                    'action' => 'login'
                ]
            ]);

1 Ответ

0 голосов
/ 27 ноября 2018

Вы всегда можете использовать метод AuthComponent::identify() для проверки формы входа в систему даже в уже аутентифицированной среде.См. Идентификация пользователей и регистрация их в в документации CakePHP и AuthComponent :: identifier в документации API.

Пошаговая инструкция:

  1. Создайте действие контроллера и шаблон для проверки пароля и включите форму для объекта User с элементами управления для полей email и password.
  2. Предварительное заполнение email, если хотите, скрытое полетакже возможно.
  3. Добавить блок $this->request->is('post'), как при стандартном входе в систему, и проверить действительный ключ при использовании $user = $this->Auth->identify();.
  4. Если возвращается действительный пользовательсохраните некоторый флаг или метку времени для тайм-аута в Session , а затем перенаправьте на защищенные страницы.
  5. На любом защищенном контроллере проверьте наличие флага или действительной метки времени в Controller ::beforeFilter метод обратного вызова и выбросить UnauthorizedException или ForbiddenException, если нет.
...