flask-login的is_authenticated和is_anonymous做了什么?

时间:2016-03-05 05:11:52

标签: python flask flask-login

在文档中,is_authenticated定义为

" is_authenticated: 如果用户经过身份验证,则返回True,即他们已提供有效凭据。 "

但是,我不明白何时调用此方法及其重点是is_anonymous同上。在示例中,它们分别只返回True和False。他们做了什么?

提前致谢。

编辑:这不是重复,因为"重复"线程没有回答我问的问题。

2 个答案:

答案 0 :(得分:1)

我不喜欢lib,但是在快速检查源代码之后:
有两个类: UserMixinAnonymousUserMixin。 对于UserMixin is_authenticatedTrueis_anonymousFalse,而Anonymous则相反。

因此,当您打开应用程序并且不对自己进行身份验证时(当前会话没有user_id,flask-login将用户设置为匿名用户(创建AnonymousUserMixin的实例),否则创建UserMixin的一个实例(我不认为这些类应该被称为mixins,但无关紧要。)

长话短说,取决于您是否经过身份验证,由flask-login创建的user对象将从具有适当值is_authenticatedis_anonymous的类中实例化。

答案 1 :(得分:1)

如果您使用flask提供的基本User类。这些方法有助于编写处理" admin"一个人必须登录的页面。调用user.is_anonymous将告诉您某人当前未登录,如果他们正在尝试访问需要登录访问权限的页面,那么您的装饰者可以返回Forbidden消息或重定向到登录页面。

如果用户输入了成功的密码并且当前已登录到您的网站,则调用user.is_authenticated会通知您。

此外,用户在首次加载应用程序中的页面时始终是匿名的(AnonymousUser类的实例化),然后当您从数据库加载用户时,用户就是User类的实例化。然而,在这个阶段,他们仍然没有经过验证。直到您执行login_user(用户),用户才被视为已通过身份验证。

还回答here