我希望限制用户只能访问他们自己创建的数据库条目。是否有任何标准的web2py方法可以实现这一点?auth.requires_permission看起来不错,但它似乎需要一个硬编码的行ID,这并不能解决我的问题。
这不应该由web2py处理。您的数据库应该处理用户权限,因此您需要查看使用的db后端的文档。
此外,如果每个人都有单独的用户帐户连接到单个数据库用户,则无法控制权限,除非在数据库周围添加大量独立的“安全”代码。例如,数据库中的一个表会查看web2py提供的字段以确定“用户”,然后相应地设置手动编码的特权。数据库有用户就是为了这个原因。
也许可以尝试使用常见的过滤器: 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
你可以使用CRUD来实现这个功能
http://web2py.com/book/default/chapter/08#Authorization-and-CRUD
您可以为每个记录定义权限,只需一点代码,即可在记录创建时将权限默认设置为用户组ID。使用删除回调函数,如果用户没有创建该行,则返回True。
db.some_table._bedfore_delete = lambda query: False if db.some_table.created_by == auth.user_id else True