是否可以使用不同的数据库通过Ion Auth对用户进行身份验证? 我想创建一个专门用于用户身份验证的数据库。因此,它应该与事务数据库分开。 怎么做?
谢谢。
答案 0 :(得分:2)
简而言之......是的,您可以使用不同的数据库进行身份验证。除了默认配置之外,您还需要在application/config/database.php
文件中创建第二个数据库配置(类似于下面的内容)。
$db['default']['hostname'] = "localhost";
$db['default']['username'] = "root";
$db['default']['password'] = "";
$db['default']['database'] = "db_name";
$db['default']['dbdriver'] = "mysql";
$db['authentication']['hostname'] = "localhost";
$db['authentication']['username'] = "root";
$db['authentication']['password'] = "";
$db['authentication']['database'] = "auth_db_name";
$db['authentication']['dbdriver'] = "mysql";
有关详细信息,请参阅 - http://ellislab.com/codeigniter/user-guide/database/configuration.html
然后,您必须修改ion_auth模型以使用第二个数据库配置,您将在加载数据库时设置该配置。
$auth_db = $this->load->database('authentication', TRUE);
然后更改模型中的所有数据库查询,将$this->db
替换为$auth_db
。
因此,$this->db->select('password, salt')
将成为$auth_db->select('password, salt')
。
有关详细信息,请参阅 - http://ellislab.com/codeigniter/user-guide/database/connecting.html
希望有所帮助!
答案 1 :(得分:2)
最简单的方法是扩展MY_Mark所说的内容。
创建新的数据库配置
$db['authentication']['hostname'] = "localhost";
$db['authentication']['username'] = "root";
$db['authentication']['password'] = "";
$db['authentication']['database'] = "auth_db_name";
$db['authentication']['dbdriver'] = "mysql";
然后在ion_auth_model.php的构造函数中执行以下操作:
$this->db = $this->load->database('authentication', TRUE);
它应该在那之后起作用。