当前位置: 首页 > 知识库问答 >
问题:

Codeigniter会话返回310重定向

龙志勇
2023-03-14

我有一个回调函数,检查我的登录详细信息是否正确-如果他们是错误的,它返回一个错误(这是工作正常)。如果细节是正确的,它应该设置会话$this-

在我的函数index(){}中,任何仪表板页面都有一行

如果($this-

上面这行是导致我的310重定向的原因,但我不确定为什么?

我想检查用户是否登录重定向到dashboard/home,否则返回登录页面home/log

控制器:

class Home extends CI_Controller {

    function __construct() {
            parent::__construct();
        }    

    public function index()
    {
        //if($this->session->userdata('logged_in')) redirect('dashboard/home');

        $data['contentMangement'] = $this->options_model->systemOptions();
        $data['pageTitle'] = 'Login';
        $data['message'] = "";
        $this->load->view('_assets/header', $data);
        $this->load->view('login', $data);
        $this->load->view('_assets/footer');
    }

    public function login() {
          $this->form_validation->set_rules('userEmail','Username', 'required|valid_email|trim|max_length[99]|xss_clean');
            $this->form_validation->set_rules('userPassword','Password', 'required|trim|max_length[200]|xss_clean|callback__checkUsernamePassword');

            if($this->form_validation->run() === FALSE) {

                $data['contentMangement'] = $this->options_model->systemOptions();
                $data['pageTitle'] = 'Login';
                $data['message'] = validation_errors('<div class="alert alert-error">', '</div>');
                $this->load->view('_assets/header', $data);
                $this->load->view('login', $data);
                $this->load->view('_assets/footer');

            }elseif($this->form_validation->run() === TRUE){

            redirect('dashboard/home');
        }
    }


    function _checkUsernamePassword() {

            $username = $this->input->post('userEmail');
            $password = $this->input->post('userPassword');

            $user = $this->user_model->check_login($username,$password);

            if(! $user)
            {
                $this->form_validation->set_message('_checkUsernamePassword', 'Sorry the details you provided have not been found');
                return FALSE;
            }else{
                 $this->session->set_userdata('logged_in',TRUE);
                return TRUE;
            }   
    }
}

共有2个答案

颛孙子民
2023-03-14

我认为你首先应该创建一个MY_Controller来做到这一点,如果有一天你决定将你的会话变量名从logged_in更改为lodge呢?您会打开所有控制器并更改其会话吗?

创建MY\u控制器您将使所有其他控制器,如Home\u控制器扩展MY\u控制器,如:

class Home extends MY_Controller
{
    public function __construct()
    {
        parent::__construct();
    }
}

您的myu控制器

//under /application/core/
class MY_Controller extends Controller
{
  public function __construct()
  {
    parent::__construct();
    if(!$this->session->userdata('logged_in'))
       redirect('login');
  }
}

当然,在您的Login\u Controller上,您将扩展Controller,而不是MY\u Controller,否则您将处于无限循环中。

岳时铭
2023-03-14

事情是这样的。

假设我正确登录,在您的登录控制器中,您设置了logged\u in=TRUE,并将我重定向到仪表板/home。在dashboard/home上的index()函数中,如果logged\u In=TRUE(实际情况),请再次将我重定向到dashboard/home。再次检查logged\u in=TRUE,并再次重定向我,依此类推。

这会导致无限重定向循环,从而导致310错误(重定向过多)。

您需要重新进行登录检查。在仪表板/主页中的索引()中,执行以下操作:

if($this)-

现在,当我访问dashboard home时,只有在我未登录的情况下,才能将我重定向到别处。这可以保护您的仪表板主页免受未经身份验证的用户的攻击,同时不会将经过身份验证的用户扔进无限循环。

 类似资料:
  • 我正在使用CodeIgniter和RestServer实现构建一个APIhttps://github.com/chriskacerguis/codeigniter-restserver 我想使用会话身份验证模式,所以我在配置/rest.php中设置了这个: 在config/config中。php: 我有一个控制器身份验证,其代码如下: 会话存储在数据库中,并包含来自$user的数据。pr回显数据(

  • 我正在使用codeigniter。我有个奇怪的问题。我在用户登录时设置会话,并将其重定向到新页面。我观察到,会话有时设置,有时不设置。我尝试过使用codeigniter会话 以下是配置文件的外观:

  • 我正在将我的CodeIgniter 3应用程序迁移到Docker,我遇到了会话问题。由于CI会话,我无法登录应用程序。 似乎CodeIgniter会在服务器的每个请求中重新创建新会话。当我检查包含的内容时,我可以看到两个字段: 新会话的文件由用户创建,并具有正确的权限。 会话配置: Docker图像:,, 我不知道发生了什么。有人能帮帮我吗?

  • 我将数据保存到会话中,但是我尝试将其读回,结果为空。Spring MVC是我的后端,Angular 4是前端。 爪哇: 角: 你知道我错过了什么吗?也许是CORS的事?

  • 我在Codeigniter框架中面临一个新问题。她是我最讨厌的人 这是控制器 模型是

  • 我已经在Codeigniter上编写了一个简单的身份验证过程,但存在一个问题。 由于某些原因,当用户浏览站点时,会话会被混淆,并模拟另一个随机用户。 我只是做: 我通过