flask-login

  1. 创建扩展对象实例
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"

  1. 使用Flask-Login之前,你需要先定义用户类,该类必须实现以下三个属性和一个方法:

属性 is_authenticated
当用户登录成功后,该属性为True。

属性 is_active
如果该用户账号已被激活,且该用户已登录成功,则此属性为True。

属性 is_anonymous
是否为匿名用户(未登录用户)。

方法 get_id()
每个用户都必须有一个唯一的标识符作为ID,该方法可以返回当前用户的ID,这里ID必须是Unicode。

因为每次写个用户类很麻烦,Flask-Login提供了”UserMixin”类,你可以直接继承它即可:

  1. @login_required
    这个装饰器放在那些需要登录才能访问的视图函数前面。如果用户未登录,它就会将页面重定向到登录视图,也就是我们在第一节中配置的”login_manager.login_view”的视图。

  2. 通过 current_user 对象来访问当前用户。
    5.登录功能
    login_user(user, form.remember_me.data)
    在登录视图中,调用”login_user()”方法时,传入”remember=True”参数,即可实现“记住我”功能:
    Flask-Login是通过在Cookie实现的,它会在Cookie中添加一个”remember_token”字段来记住之前登录的用户信息,所以禁用Cookie的话,该功能将无法工作。

  3. 登出用户:
    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
posted @ 2019-03-27 16:14  P_PlusUltra  阅读(269)  评论(0编辑  收藏  举报