2017-08-14 81 views
1

我正在使用codeigniter,我正在执行auth系统 - 用户可以登录,他可以在注销后看到所有页面。接下来的问题是:为什么注销的用户可以看到所有未登录的页面,我该如何纠正它?这是我的控制器:codeigniter中的授权

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

class User extends CI_Controller { 

public function __construct() { 
    parent::__construct(); 
    $this->load->helper(array('url', 'form')); 
    $this->load->model("usermodel"); 
    $this->load->library('session'); 
} 

private function view($page, $data=false) { 
    if($page == "auth/login"){ 
     $this->load->view("auth/header_auth.php"); 
    }else{ 
     $this->load->view("header.php"); 
    } 

    $this->load->view($page, $data); 
    $this->load->view("footer.php"); 
} 

public function index() { 
    if ($this->session->userdata("user")) { 
     redirect("dashboard", "refresh"); 
     return; 
    } 
    $this->view("auth/login"); 
} 

public function fail() { 
    $this->view("auth/login"); 

} 

public function dashboard() { 
    $this->view("auth/dashboard"); 
} 

public function login() { 
    $login = $this->input->post("login"); 
    $password = $this->input->post("password"); 
    if ($this->usermodel->login($login, $password)) { 
     $this->session->set_userdata("user", $login); 
     redirect("dashboard", "refresh"); 
    } else { 
     redirect("fail", "refresh"); 
    } 
} 

public function logout() { 
    $this->session->unset_userdata('user'); 
    session_destroy(); 
    redirect('index', 'refresh'); 
} 

} 

回答

0

如果用户在其中必须有每个函数的开始登陆,你必须检查用户权限查看

if (!$this->session->userdata("user")) { 
    redirect("auth/login", "refresh"); 
} 

我假设你的视图功能只能查看如果用户已登录,改变

private function view($page, $data=false) { 
    if($page == "auth/login"){ 
     $this->load->view("auth/header_auth.php"); 
    }else{ 
     $this->load->view("header.php"); 
    } 

    $this->load->view($page, $data); 
    $this->load->view("footer.php"); 
} 

private function view($page, $data=false) { 
if (!$this->session->userdata("user")) { 
    redirect("auth/login", "refresh"); 
} 
    if($page == "auth/login"){ 
     $this->load->view("auth/header_auth.php"); 
    }else{ 
     $this->load->view("header.php"); 
    } 

    $this->load->view($page, $data); 
    $this->load->view("footer.php"); 
} 

更新

也是你的仪表板是每个人都能看到,使其可见只有登录的用户这样做:

public function dashboard() { 
    if (!$this->session->userdata("user")) { 
    redirect("auth/login", "refresh"); 
    } 
    $this->view("auth/dashboard"); 
} 
+0

非常感谢您!但我仍然有一个问题,我有一个404页面没有找到错误:( – Ksenia

+0

哪些功能,同时调用返回404错误?? – Regolith

+0

登录函数返回此错误 – Ksenia