控制CakePHP中函数访问的最佳方式



简单的问题:什么是最好的方法来确保一个函数只被从我的应用程序内部调用?我只是想确保没有人可以直接输入url然后运行它。

我考虑过使用Auth,但我真的不需要用户名/密码保护。然后我想到了私有/受保护的函数,但是我读到CakePHP不能很好地处理这个问题。如果我使用private,作为一个例子,我将无法从另一个控制器类调用受保护的函数。

我想一定有一个简单的解决办法,但是我想不出一个。

提前感谢大家。:)

如果你的函数在不同的控制器中使用,最好创建一个组件。

但是…如果你真的需要…如果你真的想…您可以通过在方法名称的开头添加下划线来设置访问权限:

class ProductsController extends AppController {
     // a browser can "access" this method
     function iHaveAView(){
     }
     // this method is used only by controllers
     function _cantTouchMe(){
     }

好运

EDITED:(终于找到关于这个的文档了)

你也可以改变CakePHP中控制器方法的可见性用下划线作为控制器方法名的前缀。如果是控制器方法已使用下划线作为前缀,则该方法将不会被使用可直接从web访问,但可供内部使用。

source: Controller Conventions

我认为这很简单,不要把函数作为一个控制器的动作。创建一个组件,并在需要的时候使用它。

这将使你的函数对公众不可用,但在你的应用程序中可用。

你觉得怎么样?

最新更新