Codeigniter 扩展ion auth以仅允许从某些电子邮件地址/域进行注册
我想扩展Ion Auth,只允许某些电子邮件地址注册 我很确定我可以一起解决这个问题,让一些东西发挥作用,但作为codeigniter和ion auth的新手,我希望找出是否有一种“正确的方式”来做我需要的事情 例如,我是否可以“扩展”ion auth(这样我就可以更新ion auth核心文件而不必写下我的更改?) 我注意到还有一些钩子,包括这个(在register函数中): 这些问题在哪里解决?我可以使用此问题来截获与我希望注册的电子邮件地址列表不匹配的注册 如果是,我会怎么做?我需要从Codeigniter 扩展ion auth以仅允许从某些电子邮件地址/域进行注册,codeigniter,ion-auth,Codeigniter,Ion Auth,我想扩展Ion Auth,只允许某些电子邮件地址注册 我很确定我可以一起解决这个问题,让一些东西发挥作用,但作为codeigniter和ion auth的新手,我希望找出是否有一种“正确的方式”来做我需要的事情 例如,我是否可以“扩展”ion auth(这样我就可以更新ion auth核心文件而不必写下我的更改?) 我注意到还有一些钩子,包括这个(在register函数中): 这些问题在哪里解决?我可以使用此问题来截获与我希望注册的电子邮件地址列表不匹配的注册 如果是,我会怎么做?我需要从reg
register()
函数访问$email
变量
或者这只是一个从ion auth修改基本代码而不在将来更新的情况
谢谢你能给我的任何帮助。不要担心电子邮件,我能够计算出电子邮件地址是否与所需的电子邮件域匹配,我更感兴趣的是扩展库的最佳方式
汤姆
编辑:嗨,本,谢谢你的回答,谢谢你抽出时间来看看我的问题。不幸的是,这没有帮助
我猜您要做的是在sql查询中添加一点“where in”子句?我猜where in
位不正确,因为没有列名
此外,在这一点上,我无法令人满意地修改sql查询以生成所需的输出。e、 g.我可以向函数添加一个钩子,它的字面意思是$this->db->where('1=1')
,这将在下一个查询中输出此sql:
SELECT COUNT(*) AS `numrows` FROM (`users`) WHERE `1=1` AND `email` = 'rawr@rawr.com'
和电子邮件服务rawr@rawr.com“
位始终不返回任何行。它应该是或电子邮件=rawr@rawr.com“
,但如果不编辑Ion Auth核心代码,我将无法更改此设置
我开始怀疑(从最近几个小时的修补中)为了实现这一点,我可能必须编辑ion auth core 查看此示例:查看此示例:最后,我刚刚编写了一个
表单验证
回调函数,我将其放入了ion\u auth的auth
控制器中,该控制器通过允许的域列表进行检查: 最后,我只编写了一个小小的表单验证
回调函数,我把它放在了ion\u auth的auth
控制器中,该控制器通过允许的域列表进行了检查: 在auth controller中验证表单时,添加一个回调:
$this->form_validation->set_rules('email', 'Email Address', required|callback_validate_email');
在控制器中创建一个名为validate_email的方法:
function validate_email() {
if (strpos($this->input->post('email'), '@mycompany.com') === false) {
$this->form_validation->set_message('validate_email', 'Not official company email address.');
return false;
} else return true;
}
这将导致用户创建失败,因为所有规则都必须通过。您还提供了一条错误消息。只需确保表单视图侧有这一行:
echo validation_errors();
在auth controller中验证表单时,添加回调:
$this->form_validation->set_rules('email', 'Email Address', required|callback_validate_email');
在控制器中创建一个名为validate_email的方法:
function validate_email() {
if (strpos($this->input->post('email'), '@mycompany.com') === false) {
$this->form_validation->set_message('validate_email', 'Not official company email address.');
return false;
} else return true;
}
这将导致用户创建失败,因为所有规则都必须通过。您还提供了一条错误消息。只需确保表单视图侧有这一行:
echo validation_errors();
嘿,本,谢谢你,但不幸的是,它没有工作。我已经在编辑中解释了我原来的问题。不过,不要太担心,我有一种感觉,我将不得不深入并编辑您的代码。:)谢谢你的帮助嘿,本,谢谢你的帮助,但不幸的是,它不起作用。我已经在编辑中解释了我原来的问题。不过,不要太担心,我有一种感觉,我将不得不深入并编辑您的代码。:)谢谢你的帮助