我想限制用户只有他们创建的数据库条目。这是他们的任何标准web2py方式吗? auth.requires_permission看起来不错,但它似乎需要一个硬编码的行ID,这不能解决我的问题。
这不应该由web2py处理。您的数据库应该为此处理用户权限,因此您需要查看正在使用的db后端的文档。
此外,如果每个人的前端都有一个单独的用户帐户,所有用户帐户都连接到一个数据库用户,那么如果没有在顶部和周围添加一堆独立的“安全”代码,您将无法控制权限。你的数据库。例如,数据库中的一个表,用于查看web2py连接时提供的字段,以确定“用户”,然后相应地设置手动编码的权限。出于这个原因,数据库有用户。
你可以使用CRUD做到这一点
http://web2py.com/book/default/chapter/08#Authorization-and-CRUD
您可以为每条记录定义权限,只需一点代码,您就可以在创建记录时将权限默认设置为用户组ID。
在db中添加'created_by'字段。插入记录时插入用户ID。选择时使用此选项进行过滤。
或许尝试使用常见的过滤器:http://web2py.com/books/default/chapter/29/06?search=common+filter#Common-filters
db.some_table._common_filter = lambda query: db.some_table.created_by == auth.user.id
如果用户没有创建行,请使用callback on delete函数并返回True。
db.some_table._bedfore_delete = lambda query: False if db.some_table.created_by == auth.user_id else True