我一直在玩这个图书馆,这绝对棒极了。我正在测试它,我认为当一个未激活的用户尝试登录时会出现问题。我只是想知道你们是否有人注意到了这一点?会发生什么情况是用户被重定向到send_again页面,但是一旦在那里,我们就无法再将URL更改为任何其他位置。我猜这是因为会话信息没有被破坏 - 在登录功能中:
elseif ($this->tank_auth->is_logged_in(FALSE)) {
// logged in, not activated
redirect('/auth/send_again/');
这会一直执行(除非我们强行注销)。有谁知道如何解决这个问题? 谢谢!
答案 0 :(得分:1)
尝试删除\ controllers \ auth.php函数登录中的重定向值,并找到:
elseif (isset($errors['not_activated'])) {
redirect('');//auth/send_again/
}
当您未激活用户时,将始终调用send_again函数。因此,要传递send_again函数,您只需要删除重定向值
如果要激活电子邮件激活,则需要在config文件夹
上配置email.php答案 1 :(得分:1)
我在客户的网站上发现了这个错误。强制注销似乎解决了这个问题。 因此,我在函数重发函数中强制注销,就在它发送激活链接之后。
在application / controllers / auth.php
中,工作代码如下所示 function send_again()
{
if (!$this->tank_auth->is_logged_in(FALSE)) { // not logged in or activated
redirect('/auth/login/');
} else {
$this->form_validation->set_rules('email', 'Email', 'trim|required|xss_clean|valid_email');
$data['errors'] = array();
if ($this->form_validation->run()) { // validation ok
if (!is_null($data = $this->tank_auth->change_email(
$this->form_validation->set_value('email')))) { // success
$data['site_name'] = $this->config->item('website_name', 'tank_auth');
$data['activation_period'] = $this->config->item('email_activation_expire', 'tank_auth') / 3600;
$this->_send_email('activate', $data['email'], $data);
$this->_display_message(sprintf($this->lang->line('auth_message_activation_email_sent'), $data['email']));
/*
* Force a logout here or tank_auth remains
* stuck in the resend mode.
*/
$this->tank_auth->logout();
} else {
$errors = $this->tank_auth->get_error_message();
foreach ($errors as $k => $v) $data['errors'][$k] = $this->lang->line($v);
}
.....
据我所知,这只是黑客攻击,但它解决了我的问题。我不知道这个网站的创建者是否在tank_auth操作中改变了任何内容。
我希望它适用于其他人。
答案 2 :(得分:0)
if( !$this->tank_auth->is_logged_in() ){
// not logged in
} else {
// logged in
}
注意条件中的爆炸