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.userNone。所以,你必须考虑到你的情况:

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

请注意,requires_login=True 是默认值,因此您不必指定(在这种情况下,无论哪种方式都没有必要,因为 auth.user 不是 None 表示用户已登录)。