Лучший способ контролировать доступ к функциям в CakePHP - PullRequest
2 голосов
/ 12 июля 2011

Простой вопрос: каков наилучший способ гарантировать, что функция вызывается только из моего приложения?Я просто хочу убедиться, что никто не может просто ввести URL-адрес и запустить его.

Я думал об использовании аутентификации, но мне действительно не нужна защита имени пользователя / пароля.Затем я подумал о частных / защищенных функциях, но я читал, что CakePHP не очень хорошо справляется с этим.И если я использую private, например, я не смог бы вызвать защищенную функцию из другого класса контроллера.

Я думаю, что должно быть простое решение для этого, но я не могу думать оодин.

Спасибо всем заранее.:)

Ответы [ 2 ]

3 голосов
/ 12 июля 2011

если у вас есть функции, которые использовались в разных контроллерах, было бы лучше, если бы вы создали компонент.

Но .... если вам действительно нужно ... если вы действительно хотите ... вы можете установить доступ, добавив подчеркивание в начале имени вашего метода:

class ProductsController extends AppController {

     // a browser can "access" this method
     function iHaveAView(){
     }

     // this method is used only by controllers
     function _cantTouchMe(){
     }

Удачи

РЕДАКТИРОВАНИЕ: (наконец-то нашел документ об этом)

Вы также можете изменить видимость методов контроллера в CakePHP с помощью префикс имени метода контроллера с подчеркиванием. Если контроллер метод с префиксом подчеркивания, метод не будет доступны непосредственно из Интернета, но доступны для внутреннего использования.

источник: Условные обозначения контроллеров

1 голос
/ 12 июля 2011

Я думаю, это просто - не помещайте эту функцию в действие контроллера. Создайте компонент и используйте его, когда вам это нужно.

Это сделает вашу функцию недоступной для общественности, но доступной в вашем приложении.

Что ты думаешь?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...