You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

CodeIgniter如何在登录后将用户重定向至之前尝试访问的路由

解决CodeIgniter中登录后重定向回原后台页面的问题

你遇到的问题其实很常见——依赖HTTP_REFERER或者user_agent->referrer()根本不可靠,因为当用户被AdminController重定向到登录页时,浏览器不会把原后台页面的URL作为referrer发送(甚至直接为空)。下面给你一套更稳定的解决方案:

核心思路:主动保存用户的目标访问页面

别指望浏览器的referrer了,在AdminController判断用户未登录时,直接把当前请求的后台页面URL存入session,登录成功后直接从session取这个值跳转就行。

步骤1:修改AdminController的构造函数

在构造函数里,检测到用户未登录时,先获取当前要访问的完整URL,存入session后再跳转到登录页:

public function __construct()
{
    parent::__construct();
    
    // 替换成你自己的登录状态判断逻辑,比如$this->auth->is_logged_in()
    if (!$this->auth->is_logged_in()) {
        // 用CodeIgniter的current_url()获取当前请求的完整URL
        $target_page = current_url();
        // 将目标页面存入session
        $this->session->set_userdata('redirect_back', $target_page);
        // 跳转到登录页面
        redirect('login');
    }
}

步骤2:修改LoginController的登录成功逻辑

当用户登录验证通过后,先从session中取出之前保存的redirect_back值,如果存在就跳转到该页面,否则跳转到默认的后台首页:

public function do_login()
{
    // 这里是你的登录验证逻辑,比如校验用户名密码
    $is_valid = $this->auth->check_credentials($this->input->post());
    
    if ($is_valid) {
        // 获取session中保存的跳转目标
        $redirect_url = $this->session->userdata('redirect_back');
        
        // 如果有目标URL,跳转后记得清理这个session值,避免后续登录重复跳转
        if (!empty($redirect_url)) {
            $this->session->unset_userdata('redirect_back');
            redirect($redirect_url);
        } else {
            // 没有目标URL的话,跳转到后台默认首页
            redirect('admin/dashboard');
        }
    } else {
        // 登录失败的处理,比如返回登录页并提示错误
        $this->load->view('login', ['error_msg' => '用户名或密码错误']);
    }
}

为什么之前的方法会失效?

  • $_SERVER['HTTP_REFERER']和$this->agent->referrer()的值完全由浏览器决定,当请求是通过服务器重定向(比如CodeIgniter的redirect()函数)触发时,浏览器通常不会携带原页面的referrer,导致这个值为空。
  • 就算用户是直接从后台页面点击登录链接,referrer也可能因为浏览器的隐私设置被屏蔽,这种方式本身就不稳定。

额外注意事项

  • 确保你已经加载了CodeIgniter的Session库,可以在config/autoload.php中设置$autoload['libraries'] = array('session');来自动加载。
  • 这套方案能适配所有需要登录的后台页面,不需要为每个页面单独写逻辑。

内容的提问来源于stack exchange,提问作者M_Idrees

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.29 06:57:55