在文档中,is_authenticated
定义为
" is_authenticated: 如果用户经过身份验证,则返回True,即他们已提供有效凭据。 "
但是,我不明白何时调用此方法及其重点是is_anonymous
同上。在示例中,它们分别只返回True和False。他们做了什么?
提前致谢。
编辑:这不是重复,因为"重复"线程没有回答我问的问题。
答案 0 :(得分:1)
我不喜欢lib,但是在快速检查源代码之后:
有两个类:
UserMixin
和AnonymousUserMixin
。
对于UserMixin
is_authenticated
,True
和is_anonymous
为False
,而Anonymous
则相反。
因此,当您打开应用程序并且不对自己进行身份验证时(当前会话没有user_id
,flask-login将用户设置为匿名用户(创建AnonymousUserMixin
的实例),否则创建UserMixin
的一个实例(我不认为这些类应该被称为mixins
,但无关紧要。)
长话短说,取决于您是否经过身份验证,由flask-login创建的user
对象将从具有适当值is_authenticated
和is_anonymous
的类中实例化。
答案 1 :(得分:1)
如果您使用flask提供的基本User类。这些方法有助于编写处理" admin"一个人必须登录的页面。调用user.is_anonymous将告诉您某人当前未登录,如果他们正在尝试访问需要登录访问权限的页面,那么您的装饰者可以返回Forbidden消息或重定向到登录页面。
如果用户输入了成功的密码并且当前已登录到您的网站,则调用user.is_authenticated会通知您。
此外,用户在首次加载应用程序中的页面时始终是匿名的(AnonymousUser类的实例化),然后当您从数据库加载用户时,用户就是User类的实例化。然而,在这个阶段,他们仍然没有经过验证。直到您执行login_user(用户),用户才被视为已通过身份验证。
还回答here