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

问题描述 投票:3回答:5

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

python web2py
5个回答
1
投票

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

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


0
投票

你可以使用CRUD做到这一点

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

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


0
投票

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


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

0
投票

如果用户没有创建行,请使用callback on delete函数并返回True。

db.some_table._bedfore_delete = lambda query: False if db.some_table.created_by == auth.user_id else True
© www.soinside.com 2019 - 2024. All rights reserved.