2012-02-03 71 views
2

我正在开发一个jQuery移动应用程序,它需要通过表单向通过CakePHP 1.3构建的网站验证用户身份 身份验证过程通过标准的CakePHP身份验证组件进行处理。CakePHP 1.3中的JSONP请求和身份验证组件

如果我使用JSON CakePHP检测到XMLHttpRequest已通过请求头发送。 如果用户没有登录CakePHP返回“错误403:禁止。”,这是完美的。

但我必须使用JSONP(用于跨域帖子)来提交证书,这意味着XMLHttpRequest头不会被发送。 如果用户未登录,CakePHP将返回login.ctp视图的HTML代码,这在ajax上下文中不是非常有用。

相反,我喜欢收到一种JSON对象,如

jQuery16405332830320302397_1328263230862({ 
    "success" : false, 
    "errorcode" : 401, 
    "errormessage" : "User not authenticated" 
}) 

是否有一个“蛋糕”的方式,使CakePHP的验证组件手柄JSONP请求?

回答

0

我面临类似的问题。在我的情况下,API的格式为:http://example.com/action.json。 我绕过auth进行快速锻炼,但您可以编写自己的逻辑来生成响应。

public function beforeFilter() { 
     $methods = array('action1','action2'); 
     if (in_array($this->action, $methods) && 
     isset($this->params['ext']) && $this->params['ext'] == 'json' 
    ) { 
     /* ************************************************** 
     * //Your logic here 
     * //For example,in my case I allowed all json request: 
     * $this->Auth->allow($this->action, 'login','add'); 
     ***************************************************/ 
    } 

    } 

这可能是一个更好的解决方案,但这对我有效。