Code Igniter - 使用我自己的API和授权

时间:2014-06-19 14:39:51

标签: php api codeigniter authentication

我正在尝试将我的HMVC codeigniter安装到以API为中心的HMVC中(是的,我知道!)

目前我已将ion_auth作为授权系统。

我设置的方式是

MODELS
CONTROLLERS 
    - API CONTROLLER
    - CONTROLLER
VIEWS

API控制器接受JSON编码输入并发送JSON编码输出。

现在 - 一切正常 - >我可以通过调用controller/api来访问API,并且可以将其传递给JSON并接收JSON。

然后我就可以从我的正常controller

中调用控制器/ api

我的问题现在来自授权。

没有人可以访问API,如果他们没有通过Ion_auth登录(所以它是安全的)但是

如何公开API?

我认为我需要沿着O Auth路线前进,但我已经把自己捆绑在一起试图了解如何使用O Auth获取API并且在访问时不会影响我的应用程序的性能通过我的控制器。

归结为不了解O Auth是如何完全工作的(我可以实现它并理解手抖等但是细节) - >如果我找到某种方式通过O Auth验证用户(我的意思是网站用户而不是API用户)如何将其传递给我的控制器 - 是否存储在会话中?我可以给我的控制器授权吗? (我需要)

或者 - 有没有一种方法可以用Ion Auth做这个我还没有听说过?

FOR CLARITY

我希望自己的应用程序能够使用它自己的API,但不知道如何设置authrosiation,以便API可以直接使用,也可以由应用程序本地使用(当用户使用该站点时)

帮助!

提前致谢!

2 个答案:

答案 0 :(得分:1)

也许您可以删除API的O auth并只创建一个访问密钥表。当有人调用API时,他需要在表中注册的密钥。不是吗?

答案 1 :(得分:0)

使用促销的答案,加上他指出我所做的一切之后的一点想法就是:

public function __construct()
   {
        parent::__construct();
        //see if they logged in -> if they are no problem as they are obviously using the page through my application, if they aren't then we do checks for the API
        if (!$this->authentication->logged_in())
        {

            $this->token = $this->input->get_post('token');
            //API should have a token set before anything can happen, this is for every request
                if($this->token){
                    //Check that the token is valid
                    if (!$this->checkToken($this->token)){
                        $this->error('Token did not match');
                    }
                    //all clear if we get to here - token matched


                }else{ //no token was found
                    $this->error('No Token was sent');
                } 
        }
  }