我有一个使用CodeIgniter的网站,现在几乎已经完成了。我的问题是,即使我实现了会话并维护了登录系统,一个人也可以通过在浏览器地址栏中输入URL来访问任何页面。
我实施了这样的病人登记会议:
function index(){
$this->is_logged_in();
}
function log_out(){
$this->session->sess_destroy();
redirect('login_controller');
}
function is_logged_in(){
$is_logged_in = $this->session->userdata('is_logged_in');
if(!isset($is_logged_in)||$is_logged_in!= TRUE ){
redirect('login_controller');
}else{
$this->main();
}
}匿名用户不能只通过输入控制器名来访问系统,如下所示:
控制器
但他们可以这样做:
有耐心的
Person不能通过键入控制器名称来访问,但可以通过键入比控制器更长的url进入系统,如上面所示。
这里有什么问题?可能的解决办法是什么?
发布于 2010-12-17 17:23:21
听起来像是路由问题。您需要设置您的路线,以使第二种情况为非法,或者至少映射到与第一种情况相同的控制器。更多关于路由这里的信息。
发布于 2010-12-17 17:23:12
您必须在控制器的构造函数中实现登录签入。
每当调用控制器时,它都应该检查用户是否登录--如果没有,则重定向到登录页或错误页。
发布于 2010-12-17 17:27:11
若要确认是否进入登录检查,请将echo和exit放在is_logged_in()函数中,并检查是否出现在http://localhost/demo_site/index.php/register_controller/search_patient中。
您可能在各自的模块中进行登录检查,因此在某些情况下没有登录。
最好是定义一组私有模块(例如在数组中),并在前端控制器本身(在一个地方)进行登录检查,而不是在模块级别上反复检查。
https://stackoverflow.com/questions/4473042
复制相似问题