简单的问题:什么是最好的方法来确保一个函数只被从我的应用程序内部调用?我只是想确保没有人可以直接输入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
我认为这很简单,不要把函数作为一个控制器的动作。创建一个组件,并在需要的时候使用它。
这将使你的函数对公众不可用,但在你的应用程序中可用。
你觉得怎么样?