首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >限制某些动作,_remap函数,CodeIgniter

限制某些动作,_remap函数,CodeIgniter
EN

Stack Overflow用户
提问于 2010-12-05 19:19:59
回答 3查看 698关注 0票数 1

我想使一些操作只对登录用户可用。我试图用这个代码来限制一些:

代码语言:javascript
复制
function _remap($method)
    {
        $restricted = array('update_rating', 'delete_post');
        if( ! $this->session->userdata('logged_in') && in_array($method, $restricted))
        {
           echo 'Log in, please'; 
        }
        else {
           $this->$method();
        }
    }

但是$this->$method()没有接收到在url中发送的参数。做些什么呢?,我想让一些操作成为唯一的登录用户。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-12-09 07:48:45

若要限制整个控制器的登录用户,请使用以下内容:

代码语言:javascript
复制
function __construct(){

  if(!is_logged_in){
    redirect('user/login');
  }

}

如果需要限制特定方法,也可以这样做:

代码语言:javascript
复制
function restricted_function(){

   if(!is_logged_in){
     redirect('user/login');
   }

 }

这需要在调用控制器之前设置一个is_logged_in变量。

我使用一个MY_controller来检查所有控制器继承的登录会话。

票数 2
EN

Stack Overflow用户

发布于 2010-12-09 07:16:32

理想情况下,您不应该使用这种开发模式来创建用户登录。您只需在调用的类的构造函数中检查,并使用$this->router->方法查看用户试图访问的方法。对照需要登录的方法数组检查,然后检查用户是否已登录。如果其中一个条件为false,请重定向到登录页,否则,继续执行调用。以下是示例实施情况:

代码语言:javascript
复制
Class XYZ extends Controller{

    function __construct() {
        parent::controller();
        $protected_methods = array('method_1', 'method_2');

        if(in_array($this->router->method, $protected_methods)){
            // check if user is logged in
            if(!$this->session->userdata('logged_in'))
                redirect('/login');
        }
    }

}
票数 2
EN

Stack Overflow用户

发布于 2010-12-06 03:36:32

你没有给它发送任何参数。

您应该给出所有需要$method计算的参数。

代码语言:javascript
复制
function _remap($method)
{
    $restricted = array('update_rating', 'delete_post');
    if( ! $this->session->userdata('logged_in') && in_array($method, $restricted))
    {
       echo 'Log in, please'; 
    }
    else
    {
        $params = get_func_get_args();
        $this->$method($params);
    }
}

注意,这些方法现在将接收参数的数组。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4360663

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档