potentially_dangerous_method()我的控制器中有一个方法。我不希望用户随时访问它,因为它确实删除和插入了一些数据库记录。我只希望另一个动作bouncer()(也只有那个)可以调用它,并且该动作具有所有适当的验证和检查,因此它知道可以真正调用该方法。
但就目前而言,用户只需[application]/[controller]/potentially_dangerous_method在地址栏中键入即可访问该方法。我该如何预防?
如果potentially_dangerous_method不需要直接作为其自己的HTTP终结点进行访问,则可以将其包含在控制器中,并且仍然可以通过以下方式将其设置为私有:(a)以双下划线开头的名称(即__potentially_dangerous_method)或(b)使用参数定义它(例如def potentially_dangerous_method(arg1, arg2):)。请参阅有关调度的文档。
或者,您可以在模型文件或模块中定义此类功能。
最后,如果确实需要通过HTTP请求直接访问此类功能,则可以使用装饰器通过数字签名的URL保护它们@auth.requires_signature()。