flask-login 初识

发布时间 2023-05-03 22:45:44作者: 国家三级保护废物

一、在简单应用中的配置示例

1.在初始化 application 时注册一个 LoginManager 实例对象

from flask_login import LoginManager

login_manager = LoginManager()

def create_app(config_type='default'):
    config_class = config[config_type]
    app = Flask(__name__)
    app.config.from_object(config_class)

    login_manager.init_app(app)

    return app

 

2.使用 HTTP 头或者一个作为查询参数的 api 密钥。这种情况下,你应该使用 request_loader 回调

from application import login_manager


@login_manager.request_loader
def load_user_from_token(request):
    # 从token中验证身份的示例函数
    token = request.headers.get('Authorization')
    if not token:
        return None
    else:
        try:
            data = JwtTool.verify_jwt(token)
        except InvalidSignatureError:
            return None
    user = User.query.filter_by(id=data['userid']).first()
    if user:
        return user
    else:
        return None

 

3.在需要验证身份的视图中使用装饰器修饰

from flask_login import login_required


class Example(Resource):
    method_decorators = {'post': [login_required]}
    def get(self):
        pass
    
    def post(self):
        pass

 

4.重定向。默认情况下,当未登录的用户尝试访问一个 login_required 装饰的视图,Flask-Login 会闪现一条消息并且重定向到登录视图。(如果未设置登录视图,它将会以 401 错误退出。)

from application import login_manager


login_manager.login_view = "users.login"
login_manager.login_message = u"Bonvolu ensaluti por uzi tio pa臐o."

 

 

参考:

1.http://www.pythondoc.com/flask-login/index.html#flask.ext.login.LoginManager.user_loader