我正在将加密方法迁移到已经存在的~200个用户数据库到bcrypt。
我想要做的是当使用正常登录表单的用户提交请求时,应用程序将查询数据库并查看用户是否在“User.flag”字段中标记为“1”。如果他被标记为1,那么他将被发送到另一个登录表单,在那里他可以输入新密码以新方式加密。
如果用户被标记为0,那么他只是正常登录。
对于第一部分,我甚至不会使用旧密码来确认他们是真正的用户,我只会将他们输入的用户名与数据库中的用户名相匹配,与密码无关。原因是它似乎要简单得多,然后必须为大约200个用户实现我的旧加密方法,这些用户极不可能猜到彼此的用户名。
有没有人有任何关于如何做到这一点的例子?
答案 0 :(得分:0)
你应该做的只是使用一个带有ID和PASSWORD的表格。
当用户提交该表单时,请检查他是否在旧的加密系统上,使用旧的加密检查他的密码,如果匹配,则将其重定向到更改密码页面,或者只是输入他的密码并更新他的密码在数据库中直接使用新加密。
答案 1 :(得分: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');
}
}
}
在允许他们在新的登录控制器功能中重置为新加密之前,请确保让他们验证旧密码。