如何在ion auth(codeigniter库)中使用两个数据库列作为标识?

时间:2012-10-31 05:54:28

标签: php codeigniter authentication identity ion-auth

Ion Auth允许您选择一个基本上是用于登录的数据库列的标识。我希望能够在Ion Auth中为我的身份选择两个数据库列,因为我希望用户使用类似于Twitter工作方式的用户名或电子邮件进行登录。我该怎么做呢?下面是我想要完成的示例代码:

<?php
$config['identity'] = 'email && username'; // A database column which is used to login with ion auth
?>

正如您所看到的,我想要用户名和电子邮件,但我不知道如何在配置中添加两者。

2 个答案:

答案 0 :(得分:2)

ion_auth_model.php中,在登录方法中,紧跟在此代码之后:

$query = $this->db->select($this->identity_column . ', username, email, id, password, active, last_login')
      ->where($this->identity_column, $identity)
      ->limit(1)
      ->order_by('id', 'desc')
      ->get($this->tables['users']);

添加以下代码:

if($query->num_rows() == 0){
    $query = $this->db->select($this->identity_column . ', username, email, id, password, active, last_login')
          ->where('username', $this->db->escape_str($identity))
          ->limit(1)
          ->get($this->tables['users']);
}

答案 1 :(得分:1)

您必须修改库的核心才能实现这一目标。如果您不知道该怎么做,请向Ben Edmunds寻求帮助,我相信他会知道的。