@ auth.requires_permission无效

时间:2013-11-18 07:33:48

标签: python web2py

我有一个应用程序,我正在使用web2py的访问控制系统。我在 auth_user 表中有各种用户。更具体地说,我有 admin1@mysite.com 用户,其ID为4. auth_group 表中有一个组 admin ,其组ID为1 。在 auth_membership 表中,我 user_id 4与 group_id 相关1.这意味着 admin1@mysite.com 是一个 admin 组的成员。最后在 auth_permission 表中,我有一条记录,其中 group_id 1与名为搜索的权限相关联。这表示 admin 组具有搜索权限。我有一个控制器,我在其中使用装饰器的索引方法为 @ auth.requires_permission('search')。我正在使用 admin1@mysite.com 登录并使用此控制器方法。但是这个条件评估为false并且控制不进入方法内部。但是,如果我用一个 @ auth.requires_login()替换这个装饰器就行了。但我希望只有具有搜索权限的用户才能访问此方法。请帮助我实现这一目标。

1 个答案:

答案 0 :(得分:0)

db.auth_permission表格中输入记录时,除table字段外还有name字段(注意,table无需参考数据库表 - 它可以是表示任何类型对象的任何名称。选中权限后,nametable都必须匹配。

如果您通过appadmin界面或使用auth.add_permission(1, 'search')插入权限记录,则table字段将设置为空字符串(即'')。这样可行,因为当你执行@auth.requires_permission('search')时,这相当于@auth.requires_permission('search', ''),它与权限记录中的空字符串匹配。

但是,如果您通过db.auth_permission.insert(group_id=1, name='search')插入,那么table字段将设置为None,当您检查权限时,该字段将与空字符串不匹配。