Authentication 使用CodeIgniter进行用户身份验证

Authentication 使用CodeIgniter进行用户身份验证,authentication,codeigniter,redirect,loops,Authentication,Codeigniter,Redirect,Loops,我在为我的应用程序创建身份验证部分时遇到问题 下面是我的控制器的简化版本 其思想是MY_控制器检查是否存在与用户数据的会话。 如果没有,则重定向到您必须登录的索引页 MY_controller.php class MY_Controller extends Controller { function __construct() { parent::__construct(); $this->load->helper('url'); $this->load->libra

我在为我的应用程序创建身份验证部分时遇到问题

下面是我的控制器的简化版本

其思想是MY_控制器检查是否存在与用户数据的会话。 如果没有,则重定向到您必须登录的索引页

MY_controller.php

class MY_Controller extends Controller {

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

$this->load->helper('url');
$this->load->library('session');

if($this->session->userdata('user') == FALSE) {
redirect('index');

} else {
redirect('search');
}

}

} 
order.php-主控制器

class Orders extends MY_Controller {

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

$this->load->helper('url');
$this->load->library('session');
}

function index()
{
// Here would be the code that validates information input by user.
// If validation is successful, it creates user session.


$this->load->view('header.html', $data); // load header
$this->load->view('index_view', $data); // load body
$this->load->view('footer.html', $data); // load footer
}

function search()
{
//different page
} 
发生的情况是,浏览器告诉我“页面没有正确重定向。Firefox检测到服务器正在以一种永远无法完成的方式重定向对此地址的请求。”


似乎重定向()正在循环。我看了几个其他的用户身份验证示例,它们是使用类似的技术构建的。

当用户已经登录时,您似乎想将它们重定向到
/search/
。重定向发生,并且再次调用构造函数,该构造函数识别用户已登录,因此它将用户重定向到
/search/
。。。你明白了


首先,我会将您的登录逻辑分离到它自己的控制器中,该控制器不会从
MY_controller

扩展。另外,请注意,未登录时,控制器会重定向到“index”。如果索引控制器也基于My_控制器,那么它将重定向回自身(直到用户登录,然后Dolph Mathews的答案变为现实)

您需要提供一个没有检查/重定向的“安全区”,为用户提供登录表单(请注意,您的登录控制器/方法也必须具有开放访问权限!)


我倾向于在我的_控制器中弹出一个网关方法,该方法仅由私有控制器/方法根据需要调用(在完全私有控制器的构造函数中)。我相信一定有更好的方法,也许像My_控制器中的网关功能(就像你的一样),但它会过滤URI路径(例如允许索引;索引/登录;索引/注销等)

是的,我会尝试将其分离。好吧,我已经找到了方法。我创建了一个单独的登录控制器,它只进行用户身份验证。在所有其他控制器的构造中,我放置了一个simpel代码来检查是否设置了用户登录的会话。如果没有->重定向到登录控制器。工作起来很有魅力。