CodeIgniter:登录密码匹配


CodeIgniter: login password match

我很好奇用CodeIgniter登录的好方法。

我目前正在尝试以下操作:-从登录表单中获取用户的电子邮件和密码-加密该密码,并将其与数据库中的密码进行比较。

但是它返回false。我相信这是因为加密方法每次都会创建一个新的加密密码。

我相信这是一件好事,但我能看到的唯一其他登录方式如下:

  • 当用户提交表单进行登录时,表单将被验证
  • 数据库中具有匹配用户名(或电子邮件地址)的用户将被提取并存储在变量中
  • 提取的密码随后被解密,并与试图登录的用户进行比较

我对此感到不舒服,因为它要求我将未加密的密码存储在一个变量中,这可能需要一个优秀的黑客只知道用户的电子邮件地址。

建议?

当用户注册时,您可以存储密码&它是salt通过使用php crypt,即crypt($password,$salt),其中$password是用户输入的密码&salt是随机字符串。现在,在登录时

  1. 当用户提交表单进行登录时,表单将被验证
  2. 数据库中具有匹配用户名(或电子邮件地址)的用户将被提取
  3. 取出的密码被放入$hashed_password&用户输入$密码,然后比较

    if (crypt($password, $hashed_password) == $hashed_password) 
    {
    //successful login
    }else{
    //Invalid username/password
    }
    

您还可以使用使用form_validation规则

$this -> form_validation -> set_rules('passconf', 'Re-enter', 'required|matches[password]');
#the rules set as the 3rd parameter of the set_rules function have matches