- 创建扩展对象实例
from flask_login import LoginManager
login_manager = LoginManager()
login_manager.login_view = 'auth.login'
# 上面这一句是设置登录视图的名称,如果一个未登录用户请求一个只有登录用户才能访问的视图,
# 则闪现一条错误消息,并重定向到这里设置的登录视图。
# 如果未设置登录视图,则直接返回401错误。
# 默认的错误消息是:Please log in to access this page.。
login_manager.login_message = 'Unauthorized User'
# 设置闪现的错误消息的类别
login_manager.login_message_category = "info"
- 使用Flask-Login之前,你需要先定义用户类,该类必须实现以下三个属性和一个方法:
属性 is_authenticated
当用户登录成功后,该属性为True。
属性 is_active
如果该用户账号已被激活,且该用户已登录成功,则此属性为True。
属性 is_anonymous
是否为匿名用户(未登录用户)。
方法 get_id()
每个用户都必须有一个唯一的标识符作为ID,该方法可以返回当前用户的ID,这里ID必须是Unicode。
因为每次写个用户类很麻烦,Flask-Login提供了”UserMixin”类,你可以直接继承它即可:
-
@login_required
这个装饰器放在那些需要登录才能访问的视图函数前面。如果用户未登录,它就会将页面重定向到登录视图,也就是我们在第一节中配置的”login_manager.login_view”的视图。 -
通过 current_user 对象来访问当前用户。
5.登录功能
login_user(user, form.remember_me.data)
在登录视图中,调用”login_user()”方法时,传入”remember=True”参数,即可实现“记住我”功能:
Flask-Login是通过在Cookie实现的,它会在Cookie中添加一个”remember_token”字段来记住之前登录的用户信息,所以禁用Cookie的话,该功能将无法工作。 -
登出用户:
logout_user()
该方法来帮助你清理用户Session。
在狗书登录这章user类里有下面这段,
@property
def password(self):
raise AttributeError('password is not a readable attribute')
@password.setter
def password(self, password):
self.password_hash = generate_password_hash(password)
加了@property装饰器后
user=User()
user.password 就等于调用上面那个方法
user.password='1113123ada' 就等于调用下面那个方法
相当于把方法用作属性。
详细解释看这个:https://blog.csdn.net/u013205877/article/details/77804137