CodeIgniter 用户身份验证

标签 codeigniter authentication

我已经成功地使用 code igniter 对用户进行了身份验证,但现在如果用户在我的一个 Controller 中输入一个方法的路由,他们无需登录即可访问它。

我想停止对尚未登录的用户的访问,最好不使用第 3 方用户身份验证插件。

我有这个模型代码:

function login(){
    $data = array(
        'username' => $this->input->post('username'),
        'logged_in' => TRUE
    );
    $this->session->set_userdata($data);
} //function login()
function logged_in(){
    if($this->session->userdata('logged_in') == TRUE)
    {
        return TRUE;
    }
    return FALSE;
} //function logged in()

我有这个 Controller 代码:

    function index($condition = FALSE){
    if($this->admin_model->logged_in() === TRUE)
    {
        $this->books_page(TRUE);
    }
    else
    {
        $data = $this->style_model->admin_area();
        $data['page_intro'] = 'Oops! Sorry, you must be logged in to view this page.';
        $this->load->view('admin/not_logged_in', $data);
    }
} //function index()
    function books_page(){
        $data = $this->style_model->admin_area();
        $data['category_query'] = $this->admin_books_model->get_book_categories();
        $data['page_title'] = 'Books';
        $data['query'] = $this->admin_books_model->get_books();         
        $this->load->view('admin/books/books_admin', $data);
    }    //function books_page()

未登录的用户无法访问 books 方法,但他们可以访问此后的任何其他方法,我只是想停止该访问并向他们传递错误页面,通知他们必须登录。

提前致谢, 汤姆

最佳答案

最好的方法是将您的逻辑拆分为两个(或更多) Controller 。

  • “前端” Controller ——用户不需要登录的地方 参与其中的任何一个
  • “后端” Controller ——用户必须在其中 登录所有这一切

在您的后端 Controller 中执行此操作

class Backend extends CI_Controller 
{
    public function  __construct()
    {
        parent::__construct();
        if( ! ($this->admin_model->logged_in())
        {
            // Not logged in - so force them away
            redirect ('place login page here');
       }
    }
 }

然后 backend Controller 中的所有内容都受到保护。

要进一步理解这个概念 - 研究使用 MY_Controller 并让您的所有后端 Controller 从中扩展。

关于CodeIgniter 用户身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12318131/

相关文章:

php - wordpress metaWeblog.newPost xmlrpc 如果不存在则创建类别,并防止来自 codeigniter 的重复标题

ios - Freesound OAuth2 身份验证失败

c# - 无法通过启用的 UseAuthentication 访问 HomeController 路由

python - 无法在 Flask 中导入 LoginManager()

php - CI_SESSION 查询所需的 ID 以查找事件用户

codeigniter - 在 CodeIgniter 站点上的 Chrome 中获取 SSL 加密错误

ubuntu - Jenkins cli 命令返回身份验证错误

PHP登录脚本生成 session 但不生成标题()移至主页

php - 文本框在 Codeigniter 中插入 + 更新不同的表?

mysql - Codeigniter/mySQL 问题。在实际插入之前检查是否可以进行多次插入