Безопасное ключевое слово cakephp, например метод входа

Я хочу добиться чего-то вроде следующего сценария, упомянутого в CakePHP 1.3.8 последней версии:

  • Спросить Username / Password или напрямую попросить Secret Keyword
  • Если правильно, попросите Secret Keyword
  • Если правильно, доступ больше details of website
  • Если не так, don't allow любой дальнейший доступ

Есть Auth компонент в CakePHP для аутентификации, как username/password Однако я хочу реализовать этот дополнительный шаг Secret Keyword для доступа к информации, которая должна храниться в некотором файле, encrypted way или какой-то другой лучший способ вы предлагаете в single computer использование только.

Любые идеи были бы хорошы.

Спасибо!

1 ответ

Решение

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

/** Logging in and authenticated */
if ( !empty( $this->data ) && $this->Auth->user() ) {
  $this->User->id = $this->Auth->user( 'id' );
  $this->set_user_type();
  $this->User->saveField( 'last_login', date( 'Y-m-d H:i:s' ) );

  if( $this->User->has_building( $this->Auth->User('id') ) ) {
    $this->redirect( array( 'controller' => 'buildings', 'action' => 'incentives' ) );
  }
  else {
    $this->redirect( $this->Auth->redirect() );
  }
}

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

Как я уже сказал, не полный ответ, а очень простой взгляд на сложную проблему, но, надеюсь, это поможет вам начать работу.

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