如何在具有 3 个用户角色的 codeigniter 上进行良好的多级登录

我将使用 3 个用户角色登录并将访问权限限制为仅特定页面,但是每当我尝试手动键入地址时,我都可以在应限制特定用户访问该页面时访问该页面


我正在尝试遵循互联网上的一些代码,但此代码仅适用于登录,但无法限制特定用户登录时的直接访问


这是控制器Login.php


<?php

class Login extends CI_Controller

{

    function __construct()

    {

        parent::__construct();

        $this->load->model('login_model');

    }


    function index()

    {

        $this->load->view('login');

    }


    function auth()

    {

        $username = htmlspecialchars($this->input->post('username', TRUE), ENT_QUOTES);

        $password = htmlspecialchars($this->input->post('password', TRUE), ENT_QUOTES);


        $cek_us_guru = $this->login_model->auth_guru($username, $password);


        if ($cek_us_guru->num_rows() > 0) { //jika login sebagai wali kelas

            $data = $cek_us_guru->row_array();

            $this->session->set_userdata('masuk', TRUE);

            if ($data['level'] == '1') { //id_role admin

                $this->session->set_userdata('id_role', '1');

                $this->session->set_userdata('ses_id', $data['email']);

                redirect('page');

            } else { //id_role dosen

                $this->session->set_userdata('id_role', '2');

                $this->session->set_userdata('ses_id', $data['email']);

                redirect('page');

            }

        } else { //jika login sebagai mahasiswa

            $cek_us_orang_tua = $this->login_model->auth_orangtua($username, $password);

            if ($cek_us_orang_tua->num_rows() > 0) {

                $data = $cek_us_orang_tua->row_array();

                $this->session->set_userdata('masuk', TRUE);

                $this->session->set_userdata('id_role', '3');

                $this->session->set_userdata('ses_id', $data['email']);

                redirect('page');

            } else {  // jika username dan password tidak ditemukan atau salah

                $url = base_url();

                echo $this->session->set_flashdata('msg', 'Username Atau Password Salah');

                redirect($url);

            }

        }

    }




白猪掌柜的
浏览 137回答 2
2回答

撒科打诨

您可以在 page.php index() 函数而不是函数 __construct() 中尝试此操作function index()&nbsp; &nbsp; {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;if($this->session->userdata('id_role') ==1){&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;$data['_view'] = 'dashboard';&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;$this->load->view('layouts/main', $data);&nbsp; &nbsp; &nbsp; &nbsp;}else{&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;redirect("login");&nbsp; &nbsp; &nbsp; &nbsp;}&nbsp; &nbsp; }

aluckdog

您正在重定向到page控制器索引方法,您可以在该index方法上设置访问角色:function index(){&nbsp; &nbsp; if (!empty($this->session->userdata('id_role'))) {&nbsp; &nbsp; &nbsp; &nbsp; $data['_view'] = 'dashboard';&nbsp; &nbsp; &nbsp; &nbsp; $this->load->view('layouts/main', $data);&nbsp; &nbsp; } else {&nbsp; &nbsp; &nbsp; &nbsp; redirect(base_url());&nbsp; &nbsp; }}
打开App,查看更多内容
随时随地看视频慕课网APP