web2py-@auth.requires()错误:'NoneType'对象没有属性

时间:2015-12-06 03:05:41

标签: python web2py

我在db.py中添加了代码,以便在auth.define_tables(username=False, signature=True)之前添加额外的字段:

auth.settings.extra_fields['auth_user'] = (
    [Field('user_type',label="reg_type",default="Stu", requires=IS_IN_SET(['Stu, 'Com'],multiple=False))])

我希望在我的操作中进行一些身份验证,如下所示:

@auth.requires(auth.user.user_type=="Stu",requires_login=True)
define someaction:
    code

但是,当我运行我的应用程序时,我收到了错误提示。

'NoneType' object has no attribute 'user_type'

我已阅读手册

  
    

@ auth.requires还带有一个可选参数requires_login,默认为True。如果设置为False,则不需要先登录     将条件评估为真/假。条件可以是布尔值     值或评估为布尔值的函数。

  
     

请注意,访问除第一个之外的所有功能   根据访问者可能拥有或不拥有的权限进行限制。

     

如果访问者未登录,则权限不能   检查;访问者被重定向到登录页面,然后返回到   需要权限的页面。

所以我无法理解导致错误的原因。谢谢。

1 个答案:

答案 0 :(得分:1)

当用户未登录时,auth.userNone。所以,你必须考虑到你的情况:

@auth.requires(auth.user and auth.user.user_type == "Stu")

注意,requires_login=True是默认设置,因此您无需指定(在这种情况下,无论如何都不需要,因为auth.user不是None意味着用户已登录。)