0

我正在将加密方法迁移到已经存在的约 200 个用户数据库以进行 bcrypt。

我想要做的是当使用普通登录表单的用户提交请求时,应用程序将查询数据库并查看用户是否在“User.flag”字段中标记为“1”。如果他被标记为 1,那么他将被发送到另一个登录表单,他可以在其中输入新密码以以新方式对其进行加密。

如果用户被标记为 0,那么他只是正常登录。

对于第一部分,我什至不会使用旧密码来确认他们是真实用户,我只会将他们输入的用户名与数据库中的用户名匹配,与密码无关。原因是它似乎比只为大约 200 个不太可能猜到彼此用户名的用户实施我的旧加密方法要简单得多。

有没有人有如何做到这一点的任何例子?

4

2 回答 2

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 回答
0

你应该做的是只使用一种带有 ID 和 PASSWORD 的表格。

当用户提交该表单时,您然后检查他是否在旧加密系统上,使用旧加密检查他的密码,如果匹配,您将他重定向到更改密码页面,或者只是获取他的密码并在数据库中更新他的密码直接用新的加密。

于 2013-06-07T18:24:29.213 回答