我有一个回调函数,检查我的登录详细信息是否正确-如果他们是错误的,它返回一个错误(这是工作正常)。如果细节是正确的,它应该设置会话$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;
}
}
}
我认为你首先应该创建一个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
,否则您将处于无限循环中。
事情是这样的。
假设我正确登录,在您的登录控制器中,您设置了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上编写了一个简单的身份验证过程,但存在一个问题。 由于某些原因,当用户浏览站点时,会话会被混淆,并模拟另一个随机用户。 我只是做: 我通过