web2py:将用户限制为仅由用户创建的行

时间:2011-04-26 19:54:57

标签: python web2py

我想将用户限制为只有他们创建的数据库条目。这是他们的任何标准web2py方式吗? auth.requires_permission看起来不错,但它似乎需要一个硬编码的行ID,这不能解决我的问题。

5 个答案:

答案 0 :(得分:1)

这不应该由web2py处理。您的数据库应该为此处理用户权限,因此您需要查看正在使用的db后端的文档。

此外,如果每个人的前端都有一个单独的用户帐户,所有用户帐户都连接到一个数据库用户,那么如果没有添加一堆独立的“安全”代码,您将无法控制权限。及其周围的数据库。例如,数据库中的一个表,用于查看web2py连接时提供的字段,以确定“用户”,然后相应地设置手动编码的权限。出于这个原因,数据库有用户。

答案 1 :(得分:0)

你可以使用CRUD

来做到这一点

http://web2py.com/book/default/chapter/08#Authorization-and-CRUD

您可以为每条记录定义权限,只需一点代码,您就可以在创建记录时将权限默认设置为用户组ID。

答案 2 :(得分:0)

在db中添加'created_by'字段。插入记录时插入用户ID。使用此选项进行过滤。

答案 3 :(得分:0)

也许尝试使用常见的过滤器: 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

答案 4 :(得分:0)

使用callback on delete函数,如果用户未创建该行,则返回True。

db.some_table._bedfore_delete = lambda query: False if db.some_table.created_by == auth.user_id else True