zoukankan      html  css  js  c++  java
  • flask接口入门实现简单的登录注册(二)

    这个地方就用到了蓝本,因为使用了工厂函数必须要用蓝本把路由注册到app里

    获取前端的数据为JSON,返回的时候也是一个json信息

    auth.py

    import functools
    
    from flask import (
        Blueprint, g, jsonify, request, session
    )
    from werkzeug.security import check_password_hash, generate_password_hash
    
    from app.db import get_db
    
    bp = Blueprint('auth', __name__, url_prefix='/auth')
    
    
    @bp.route('/register', methods=('GET', 'POST'))
    def register():
        if request.method == 'POST':
            stu_id = request.json['stu_id']
            username = request.json['username']
            password = request.json['password']
            db = get_db()
            error = None
    
            if not username:
                error = 'Username is required.'
            elif not password:
                error = 'Password is required.'
            elif db.execute(
                    'SELECT stu_id FROM user WHERE username = ?', (username,)
            ).fetchone() is not None:
                error = 'User {} is already registered.'.format(username)
                return jsonify({'msg': 'error'})
            if error is None:
                db.execute(
                    'INSERT INTO user (stu_id,username, password) VALUES (?, ?, ?)',
                    (stu_id, username, generate_password_hash(password))
                )
                db.commit()
    
            return jsonify({'msg': 'Register success.'})
        return jsonify({'msg': None})
    
    
    @bp.route('/login', methods=('GET', 'POST'))
    def login():
        if request.method == 'POST':
            stu_id = request.json['stu_id']
            password = request.json['password']
            db = get_db()
            error = None
            user = db.execute(
                'SELECT * FROM user WHERE stu_id = ?', (stu_id,)
            ).fetchone()
    
            if user is None:
                error = 'Incorrect stu_id.'
            elif not check_password_hash(user['password'], password):
                error = 'Incorrect password.'
                return jsonify({'err': 'login failed'})
    
            if error is None:
                session.clear()
                session['username'] = user['username']
                return jsonify({'msg': 'login success.'})
    
        return jsonify({'msg': None})
    
    
    @bp.before_app_request
    def load_logged_in_user():
        stu_id = session.get('stu_id')
    
        if stu_id is None:
            g.user = None
        else:
            g.user = get_db().execute(
                'SELECT * FROM user WHERE stu_id = ?', (stu_id,)
            ).fetchone()
    
    
    @bp.route('/logout')
    def logout():
        session.clear()
        return jsonify({'msg': 'logout success'})

    到这里就完成了登录注册,后面会记录学习过程中的收获

  • 相关阅读:
    C#_WinForm接收命令行参数
    SQLite不支持的SQL语法总结
    Thirft框架介绍
    jquery获取复选框的值
    REST构架风格介绍:状态表述转移
    RESTful HTTP的实践infoQ
    C#如何在webBrowser1控件通过TagName,Name查找元素(没有ID时)遍历窗体元素
    Html TO Ubb and Ubb TO Html
    SQL 位运算
    Memcached真的过时了吗?【转帖】
  • 原文地址:https://www.cnblogs.com/freven/p/11932821.html
Copyright © 2011-2022 走看看