codeigniter - 在另一个 Controller 中对 codeigniter 使用 ion auth 身份验证

标签 codeigniter session authentication ion-auth

我正在尝试使用 codeigniter 构建 Web 应用程序。我已安装 Ion Auth 作为我的身份验证模型。

默认的 Auth.php Controller 对用户进行身份验证并设置 session 。

<?php defined('BASEPATH') OR exit('No direct script access allowed');

class Auth extends CI_Controller {



    function __construct()
    {
        parent::__construct();
        $this->load->library('ion_auth');
        $this->load->library('session');
        $this->load->library('form_validation');
        $this->load->helper('url');

        $data['title']="Login Page";
        $this->load->view("view_site_header",$data);

        // Load MongoDB library instead of native db driver if required
        $this->config->item('use_mongodb', 'ion_auth') ?
        $this->load->library('mongo_db') :

        $this->load->database();    

        $this->form_validation->set_error_delimiters($this->config->item('error_start_delimiter', 'ion_auth'), $this->config->item('error_end_delimiter', 'ion_auth'));
    }

    //redirect if needed, otherwise display the user list
    function index()
    {
        // if not logged in - go to home page
        if (!$this->ion_auth->logged_in())
        {
            //redirect them to the login page
            redirect('auth/login', 'refresh');
        }
        // if user is an admin go to this page
        elseif ($this->ion_auth->is_admin())
        {
            // if an admin, go to admin area

            //set the flash data error message if there is one
            $this->data['message'] = (validation_errors()) ? validation_errors() : $this->session->flashdata('message');

            //list the users
            $this->data['users'] = $this->ion_auth->users()->result();
            foreach ($this->data['users'] as $k => $user)
            {
                $this->data['users'][$k]->groups = $this->ion_auth->get_users_groups($user->id)->result();
            }

            $this->_render_page('auth/view_users', $this->data);                
        }   else
    {
        //redirect them to the default home page 
        $data['title']="IMS Home Page";
        $this->load->view("generic/view_site_header",$data);
        $this->load->view("generic/view_generic_nav");
        $this->load->view("generic/view_content_generic");
        $this->load->view("view_site_footer");
    }
}

我想做的是为我的应用程序逻辑创建一个新的 Controller ,并让 auth Controller 进行身份验证。

如何使用 auth Controller 来确保我的用户在访问我的新 Controller 时已登录?此外,我需要新 Controller 可以使用 session 信息。

我的新 Controller master_data 具有以下代码:

<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');

class Masterdata extends CI_Controller{

    function index ()
    {
            $data['title']="Master Data Home Page";
            $this->load->view("master_data/view_master_data_header",$data);
            $this->load->view("master_data/view_master_data_nav");
            $this->load->view("master_data/view_content_master_data_home");
            $this->load->view("master_data/view_master_data_footer");

            echo $this->session->userdata('username');



    }
}

显然 echo $this->session->userdata('username'); 不起作用,因为新 Controller 不知道 auth Controller session 。

一如既往地感谢任何帮助。

亲切的问候,

最佳答案

首先自动加载 ion_auth 库。 如果你只是想检查用户是否登录,只需在你加载的每个 Controller 的构造函数中检查它

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

    if (!$this->ion_auth->logged_in()) {
       // redirect to login view
    } 
}

如果你碰巧有多个组,你可以在 application/core/MY_controller 中创建一个新的 Controller 。这个 Controller 将检查用户是否登录。你可以扩展这个基本 Controller 来创建新的 Controller 。一个很好的解释这是 David john 给出的。检查此 link .

关于codeigniter - 在另一个 Controller 中对 codeigniter 使用 ion auth 身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15143313/

相关文章:

php - 如何通过 form_open_multipart 将 id 从 View 发送到 Controller CodeIgniter

apache - 将 CodeIgniter 安装移动到子域会导致 500 内部服务器错误

jsp - HTTPSession 中存储的属性限制

c++ - 使用 libssh 连接到 SUSE

用于登录的身份验证过滤器和 servlet

django - 在 django 中创建 super 用户

php - 解析错误: syntax error

php - Codeigniter 的面向对象方案

php - 帐户删除后关闭 session

PHP session 似乎无法正常工作