• Flask 通过扩展来实现登录验证


    1. flask扩展

    说明:

    flask的扩展类似于python中的装饰器,和Django中的process_request的方法也类似

    测试代码

    from flask import Flask,session,Session,flash,get_flashed_messages,redirect,render_template,request
    app = Flask(__name__)
    app.secret_key ='sdfsdfsdf'
    
    @app.before_request
    def process_request1():
        print('process_request1')
    
    @app.after_request
    def process_response1(response):
        print('process_response1')
        return response
    
    
    @app.before_request
    def process_request2():
        print('process_request2')
    
    @app.after_request
    def process_response2(response):
        print('process_response2')
        return response
    
    
    @app.route('/index')
    def index():
        print('index')
        return 'Index'
    
    @app.route('/order')
    def order():
        print('order')
        return 'order'
    
    @app.route('/test')
    def test():
        print('test')
        return 'test'
    
    if __name__ == '__main__':
        app.run()

    在浏览器中访问index结果:

    process_request1
    process_request2
    127.0.0.1 - - [04/Jan/2018 15:48:53] "GET / HTTP/1.1" 404 -
    process_response2
    process_response1
    127.0.0.1 - - [04/Jan/2018 15:48:58] "GET /index HTTP/1.1" 200 -
    process_request1
    process_request2
    index
    process_response2
    process_response1

    实际使用案例:

    #!/usr/bin/env python
    # -*- coding:utf-8 -*-
    # Author:supery
    
    from flask import Flask,render_template,request,redirect,session
    
    app = Flask(__name__)
    # 使用session需要配置secret_key
    app.secret_key ='sdfsdfsdf'
    
    @app.route('/login',endpoint='login',methods=['POST','GET'])
    def login():
        if request.method == "GET":
            return render_template('login.html')
        else:
            user = request.form.get('username')
            pwd = request.form.get('password')
            if user == 'alex' and pwd =='123':
                # 创建session信息
                session['user_info'] = {'user':user,'userID':1}
                return redirect('index')
            return render_template('login.html')
    
    
    @app.before_request
    def process_request():
        if request.path == '/login':
            return None
        if not session.get('user_info'):
            return redirect('login')
    
    
    @app.after_request
    def process_response(response):
        print('写扩展程序')
        return response
    
    @app.route('/index',endpoint='index',methods=['GET','POST'])
    def index():
        return 'index'
    
    
    @app.route('/query',endpoint='query',methods=['GET','POST'])
    def query():
        return 'query'
    
    @app.route('/student',endpoint='student',methods=['GET','POST'])
    def student():
        return 'student'
    
    if __name__ == '__main__':
        app.run()
    扩展登录验证
  • 相关阅读:
    创业感悟:工程师的自我突破
    如何向Openstack社区提交一个新项目
    Advacned Puppet: Puppet Master性能调优
    Mysql Join语法解析与性能分析
    git初体验(七)多账户的使用
    (2):Mysql 查看、创建、更改 数据库和表
    博客索引
    双声道合并为单声道
    树莓派命令行配置无线网络
    树莓派安装Ubuntu系统
  • 原文地址:https://www.cnblogs.com/supery007/p/8193759.html
Copyright © 2020-2023  润新知