PHP CodeIgniter:成功的ion-auth登录刷新,注销并重定向到登录

时间:2018-08-30 07:07:32

标签: php codeigniter ion-auth

我最近继承了一个有效的网站代码,该代码是在PHP中使用CodeIgnitor设计的,我正在尝试进一步开发它。尝试本地xampp)本地运行时,我遇到了一个问题:

代码构建良好,将我带到了登录页面。我在这里使用ion-auth登录,该操作成功继续,保存了会话(此方法有效)并继续到登录页面。 但是,登录后一旦加载任何页面,它都会立即注销用户并导航回登录页面。

与实时网站相比,唯一代码更改的是它所连接的数据库,基本URL和一些导航。这里可能是什么问题? xamppion-auth或某些配置会出现问题吗?

// log the user in
public function login()
{
    $this->data['title'] = $this->lang->line('login_heading');

    // validate form input
    $this->form_validation->set_rules('identity', str_replace(':', '', $this->lang->line('login_identity_label')), 'required');
    $this->form_validation->set_rules('password', str_replace(':', '', $this->lang->line('login_password_label')), 'required');

    if ($this->form_validation->run() == true)
    {
        // check to see if the user is logging in
        // check for "remember me"
        $remember = (bool) $this->input->post('remember');

        if ($this->ion_auth->login($this->input->post('identity'), $this->input->post('password'), $remember))
        {
            // if the login is successful
            // redirect them back to the home page
            $this->session->set_flashdata('message', $this->ion_auth->messages());
            redirect('/', 'refresh');
        }
        else
        {
            // if the login was un-successful
            // redirect them back to the login page
            $this->session->set_flashdata('message', $this->ion_auth->errors());
            redirect('auth/login', 'refresh'); // use redirects instead of loading views for compatibility with MY_Controller libraries
        }
    }
    else
    {
        // the user is not logging in so display the login page
        // set the flash data error message if there is one
        $this->data['message'] = (validation_errors()) ? validation_errors() : $this->session->flashdata('message');

        $this->data['identity'] = array('name' => 'identity',
            'id'    => 'identity',
            'type'  => 'text',
            'value' => $this->form_validation->set_value('identity'),
        );
        $this->data['password'] = array('name' => 'password',
            'id'   => 'password',
            'type' => 'password',
        );

        $this->_render_page('auth/login', $this->data);
    }
}

按照马丁的建议,我尝试了session_start();,它显示了以下内容:

A PHP Error was encountered
Severity: Warning

Message: ini_set(): A session is active.
You cannot change the session module's ini settings at this time

Filename: Session/Session.php

Line Number: 281

Backtrace:

File: C:\Programs\xampp\htdocs\modules\applications\azdemo\controllers\Shared.php
Line: 8
Function: __construct

File: C:\Programs\xampp\htdocs\modules\customers\azdemo\index.php
Line: 315
Function: require_once

2 个答案:

答案 0 :(得分:1)

嘿,我遇到了同样的问题。它与 php5.6 和 php7.2 的 ion-auth 支持有关

他们对不同的 php 版本使用不同的散列技术。如果您升级了 php 版本,您可能需要检查 ion-auth 配置文件并更新哈希方法。

以下是 ion auth 文档中的一些内容:

<块引用>

您可以选择 bcrypt(来自 PHP 5.3)或 argon2(来自 PHP 7.2)

文档链接:ION-Auth

如果它有帮助,请告诉我,如果您觉得有用,请点赞!

答案 1 :(得分:0)

临时解决方案通过将php7.2.6降级为php5.5.38解决了这个问题。某些情况可能需要升级某些库。由于本地域问题以及您无法轻易降级xampp的php版本的事实,我也从xampp切换到mamp pro 4

希望这对以后的人有帮助。