我的控制器中有一个方法potentially_dangerous_method()
。我不希望用户随时访问它,因为它确实删除和插入了一些数据库记录。我只希望调用另一个动作bouncer()
(并且只有那个),并且该动作具有所有适当的验证和检查,因此它知道可以真正调用该方法。
但实际上,用户只需在地址栏中键入[application]/[controller]/potentially_dangerous_method
即可访问该方法。我该如何预防?
答案 0 :(得分:5)
如果potentially_dangerous_method
不需要直接作为其自己的HTTP端点进行访问,则可以将其包含在控制器中,并通过(a)以双下划线将其名称开头(例如,{ {1}}或(b)用参数(例如__potentially_dangerous_method
)定义它。请参阅dispatching上的文档。
或者,您可以在模型文件或模块中定义此类功能。
最后,如果确实需要通过HTTP请求直接访问此类功能,则可以使用def potentially_dangerous_method(arg1, arg2):
装饰器通过digitally signed URLs保护它们。