0

暗号化方法を既存の ~ 200 ユーザー データベースに移行して bcrypt にします。

私がやりたいのは、通常のログイン フォームを使用しているユーザーがリクエストを送信すると、アプリはデータベースにクエリを実行し、ユーザーが「User.flag」フィールドで「1」のフラグを立てているかどうかを確認することです。フラグが 1 の場合、別のログイン フォームに送られ、そこで新しいパスワードを入力して、新しい方法で暗号化することができます。

ユーザーのフラグが 0 の場合、ユーザーは通常どおりログインします。

最初の部分では、実際のユーザーであることを確認するために古いパスワードを使用することさえしません。パスワードとは関係なく、入力したユーザー名をデータベースのユーザー名と照合するだけです。その理由は、お互いのユーザー名を推測する可能性が非常に低い ~200 のユーザーに対してのみ、私の古い暗号化方法を実装する必要があるよりもはるかに簡単に思えるからです。

これを行う方法の例はありますか?

4

2 に答える 2

0

ID と PASSWORD を含む 1 つのフォームのみを使用する必要があります。

ユーザーがそのフォームを送信したら、彼が古い暗号化システムを使用しているかどうかを確認し、その古い暗号化でパスワードを確認し、一致する場合は、パスワードの変更ページにリダイレクトするか、パスワードを取得してデータベースのパスワードを更新します新しい暗号化で直接。

于 2013-06-07T18:24:29.213 に答える
0
//AppController.php
public function beforeFilter(){

   $this->_new_encryption_check();

}

private function _new_encryption_check(){
    if ($this->request->data && $this->action == 'login'){
        $this->loadModel('User');
        //find user by whatever their login name is
        $user = $this->User->findByEmail($this->request->data['User']['email']);
        if ($user && $user['User']['flag'] == '1'){
            $this->Session->setFlash('You must reset your password for security purposes.', 'flash/error');
            $this-redirect('newEncryption/forPassword/url');
        }
    }

}

新しいログイン コントローラー関数で新しい暗号化にリセットすることを許可する前に、古いパスワードを確認するようにしてください。

于 2013-06-09T13:29:14.453 に答える