验证并将数据从Android应用程序发布到cakePHP网站

时间:2013-01-30 09:08:35

标签: android cakephp forms-authentication restful-authentication

我正在构建一个将数据从Android设备发布到cakephp后端(Web Service)的应用程序。我最终创建了自己的身份验证对象并发送了这样的访问令牌:

class MyAuthenticate extends BaseAuthenticate {

    public function authenticate(CakeRequest $request, CakeResponse $response) {

        $userCont = $this->_Collection->getController();
        $userCont->loadModel($this->_Collection->getController()->modelClass);

        $response = array();


        if (isset($request['data']['access_token']) AND $userCont->User->find('all', array('recursive' => 0, 'conditions' => array('User.access_token' => $request['data']['access_token'])))) {

            //debug( $userCont->User->find('all',array('recursive'=>0,'conditions'=>array('access_token'=>$request['data']['access_token'])))); 
            //die;
            return $userCont->User->find('all', array('recursive' => 0, 'conditions' => array('access_token' => $request['data']['access_token'])));
        }
        else
            return false;//print_r('NOT FOUND');
     } 

然后将其添加到身份验证数组

public function beforeFilter() {


    $this->Auth->authenticate = array(
        AuthComponent::ALL => array('userModel' => 'User'),

        'Form',
        'My'


    );

我通过向登录页面发布带有访问令牌的请求来测试它,然后返回主页(重定向URL)。

现在我想将数据发布到其他控制器操作,例如“添加”帖子。如果我将请求发送到例如mysite / posts / add以及访问令牌和请求参数,则它不会发布并返回ACL权限错误消息。

我想我需要在登录或某些事情上进行一些重定向或手动重定向?到目前为止,我的逻辑是否正确构建此身份验证对象?

非常感谢。

1 个答案:

答案 0 :(得分:0)

您可以在控制器中使用$ this-> Auth-> allow('.. ACTION ..')。您现在必须在Cake处理中检查请求的标题,所以我建议在beforeFilter方法中使用此检查创建一个单独的WebserviceController ......