Компонент запроса JSONP и аутентификации в CakePHP 1.3 - PullRequest
2 голосов
/ 03 февраля 2012

Я работаю над мобильным приложением jQuery, которое должно аутентифицировать пользователя с помощью формы на веб-сайте, созданном с помощью CakePHP 1.3. Процесс аутентификации обрабатывается с помощью стандартного компонента CakePHP Auth.

Если я использую JSON, CakePHP обнаруживает, что запрос XMLHttpRequest был отправлен через заголовки запроса. Если пользователь не вошел в систему, CakePHP возвращает «ОШИБКА 403: Запрещено.», Что идеально.

Но мне нужно использовать JSONP (для междоменных сообщений) для отправки учетных данных, это означает, что заголовки XMLHttpRequest НЕ отправляются. Если пользователь не вошел в систему, CakePHP возвращает HTML-код представления login.ctp, который не очень полезен в контексте ajax.

Вместо этого мне нравится получать объект типа JSON, например

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

Есть ли способ "Cake", чтобы компонент CakePHP Auth обрабатывал JSONP-запросы?

1 Ответ

0 голосов
/ 03 ноября 2013

Я столкнулся с подобной проблемой.В моем случае API имел формат: http://example.com/action.json.Я обхожу аутентификацию для быстрой тренировки, но вы можете написать свою логику для генерации ответа.

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');
         ***************************************************/
    }

    }

Возможно, это лучшее решение, но это сработало для меня.

...