CakePHP Auth Allow JSON Extension - PullRequest
       7

CakePHP Auth Allow JSON Extension

3 голосов
/ 01 февраля 2011

По сути, я хотел бы знать, можете ли вы использовать компонент Auth, чтобы разрешить определенные расширения (JSON / HTML)?

По сути, скажем, у нас есть одно действие, действие индексное.В этом действии все, что мы делаем - это список авторов (пользователей).Таким образом, URL-адрес http://somewebsite.com/authors/index. Если перейти к этому URL-адресу, тип контента будет HTML, который должен быть ограничен для зарегистрированных пользователей (администраторов), чтобы они могли иметь кнопки «Редактировать / Удалить».Однако мы также используем это действие для представления json, когда вы ставите расширение .json в конце его, поэтому URL будет http://somewebsite.com/authors/index.json. В этом случае вам не нужно будет входить в систему, потому что вы простохотите получить доступ к этой информации.

Итак, возможно ли для компонента Auth разрешить определенные расширения, и это лучший способ сделать это?

Спасибо и ура!

1 Ответ

3 голосов
/ 02 февраля 2011

Что-то в этом духе должно работать (включая явное «разблокирование» только определенных методов):

public function beforeFilter() {
    $methods = array('index', 'foo', 'bar');

    // please forgive the terrible indentation
    if (in_array($this->action, $methods) &&
        isset($this->params['ext']) && $this->params['ext'] == 'json'
    ) {
        $this->Auth->allow($this->action);
    }
}
...