如何通过在地址栏中键入操作来防止用户访问操作?

时间:2018-06-26 08:58:10

标签: web2py

我的控制器中有一个方法potentially_dangerous_method()。我不希望用户随时访问它,因为它确实删除和插入了一些数据库记录。我只希望调用另一个动作bouncer()(并且只有那个),并且该动作具有所有适当的验证和检查,因此它知道可以真正调用该方法。

但实际上,用户只需在地址栏中键入[application]/[controller]/potentially_dangerous_method即可访问该方法。我该如何预防?

1 个答案:

答案 0 :(得分:5)

如果potentially_dangerous_method不需要直接作为其自己的HTTP端点进行访问,则可以将其包含在控制器中,并通过(a)以双下划线将其名称开头(例如,{ {1}}或(b)用参数(例如__potentially_dangerous_method)定义它。请参阅dispatching上的文档。

或者,您可以在模型文件或模块中定义此类功能。

最后,如果确实需要通过HTTP请求直接访问此类功能,则可以使用def potentially_dangerous_method(arg1, arg2):装饰器通过digitally signed URLs保护它们。