web2py-@auth.requires() error: 'NoneType' object has no attribute
web2py-@auth.requires() error: 'NoneType' object has no attribute
我在我的 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 also takes an optional argument requires_login which defaults to True. If set to False, it does not require login before
evaluating the condition as true/false. The condition can be a boolean
value or a function evaluating to boolean.
请注意,除了第一个功能外,所有功能的访问权限都是
根据访问者可能拥有或不拥有的权限进行限制。
如果访问者未登录,则无法获得权限
检查;访问者被重定向到登录页面,然后返回到
需要权限的页面。
所以我不明白是什么导致了这个错误。谢谢。
当用户未登录时,auth.user
为None
。所以,你必须考虑到你的情况:
@auth.requires(auth.user and auth.user.user_type == "Stu")
请注意,requires_login=True
是默认值,因此您不必指定(在这种情况下,无论哪种方式都没有必要,因为 auth.user
不是 None
表示用户已登录)。
我在我的 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 also takes an optional argument requires_login which defaults to True. If set to False, it does not require login before evaluating the condition as true/false. The condition can be a boolean value or a function evaluating to boolean.
请注意,除了第一个功能外,所有功能的访问权限都是 根据访问者可能拥有或不拥有的权限进行限制。
如果访问者未登录,则无法获得权限 检查;访问者被重定向到登录页面,然后返回到 需要权限的页面。
所以我不明白是什么导致了这个错误。谢谢。
当用户未登录时,auth.user
为None
。所以,你必须考虑到你的情况:
@auth.requires(auth.user and auth.user.user_type == "Stu")
请注意,requires_login=True
是默认值,因此您不必指定(在这种情况下,无论哪种方式都没有必要,因为 auth.user
不是 None
表示用户已登录)。