cakephp安全关键字,如登录方法

时间:2011-04-21 11:49:47

标签: security cakephp methods login keyword

我希望在CakePHP 1.3.8中实现类似于以下场景的最新版本:

  • 要求Username / Password或直接询问Secret Keyword
  • 如果正确,请询问Secret Keyword
  • 如果正确,请访问更多details of website
  • 如果错误,don't allow进一步访问

CakePHP中有Auth个组件用于username/password之类的身份验证但是我想实现Secret Keyword的额外步骤来访问应存储在某个文件中的信息,encrypted way或者仅在single computer用法中建议的其他更好的方式。

任何想法都会受到赞赏。

谢谢!

1 个答案:

答案 0 :(得分: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() );
  }
}

这是我自己的一个项目的片段。在您的情况下,您可能会查找下一个密钥值。如果不存在,请进入视图以检索它并提交回相同的方法。在第二次传递中,如果用户已通过身份验证并且密钥已传递并存在,则根据需要重定向。如果密钥错误,则取消验证用户并重定向。

就像我说的那样,不是一个完整的答案,而是一个非常简单的看待一个难题,但希望它可以帮助你开始。