0
点赞
收藏
分享

微信扫一扫

python 实现登陆注册接口加token验证

Python实现登录注册接口加Token验证

整体流程

步骤 描述
1. 创建数据库 创建一个MySQL数据库用于存储用户信息和Token
2. 创建表格 在数据库中创建一个用户表格用于存储用户的登录信息
3. 注册接口 实现用户注册接口,将用户信息插入数据库
4. 登录接口 实现用户登录接口,验证用户信息并生成Token
5. Token验证 在每个需要身份验证的请求中,验证请求头中的Token

详细步骤

1. 创建数据库

首先,我们需要创建一个MySQL数据库来存储用户信息和Token。可以使用以下代码来创建数据库:

import mysql.connector

# 连接数据库
mydb = mysql.connector.connect(
  host="localhost",
  user="yourusername",
  password="yourpassword"
)

# 创建数据库
mycursor = mydb.cursor()
mycursor.execute("CREATE DATABASE mydatabase")

2. 创建表格

在创建好数据库后,我们需要在数据库中创建一个用户表格来存储用户的登录信息。可以使用以下代码来创建表格:

import mysql.connector

# 连接数据库
mydb = mysql.connector.connect(
  host="localhost",
  user="yourusername",
  password="yourpassword",
  database="mydatabase"
)

# 创建表格
mycursor = mydb.cursor()
mycursor.execute("CREATE TABLE users (id INT AUTO_INCREMENT PRIMARY KEY, username VARCHAR(255), password VARCHAR(255))")

3. 注册接口

接下来,我们需要实现一个用户注册接口,将用户信息插入到数据库中。可以使用以下代码来实现注册接口:

from flask import Flask, request
import mysql.connector

app = Flask(__name__)

# 连接数据库
mydb = mysql.connector.connect(
  host="localhost",
  user="yourusername",
  password="yourpassword",
  database="mydatabase"
)

# 注册接口
@app.route('/register', methods=['POST'])
def register():
    username = request.form['username']
    password = request.form['password']
    
    # 将用户信息插入数据库
    mycursor = mydb.cursor()
    sql = "INSERT INTO users (username, password) VALUES (%s, %s)"
    val = (username, password)
    mycursor.execute(sql, val)
    mydb.commit()
    
    return "User registered successfully"

if __name__ == '__main__':
    app.run()

4. 登录接口

现在,我们需要实现一个用户登录接口,验证用户信息并生成Token。可以使用以下代码来实现登录接口:

from flask import Flask, request, jsonify
import mysql.connector
import jwt

app = Flask(__name__)
app.config['SECRET_KEY'] = 'your_secret_key'

# 连接数据库
mydb = mysql.connector.connect(
  host="localhost",
  user="yourusername",
  password="yourpassword",
  database="mydatabase"
)

# 登录接口
@app.route('/login', methods=['POST'])
def login():
    username = request.form['username']
    password = request.form['password']
    
    # 查询数据库中是否存在匹配的用户名和密码
    mycursor = mydb.cursor()
    sql = "SELECT * FROM users WHERE username = %s AND password = %s"
    val = (username, password)
    mycursor.execute(sql, val)
    user = mycursor.fetchone()
    
    if user:
        # 生成Token
        token = jwt.encode({'username': username}, app.config['SECRET_KEY'], algorithm='HS256')
        return jsonify({'token': token.decode('utf-8')})
    else:
        return jsonify({'error': 'Invalid username or password'})

if __name__ == '__main__':
    app.run()

5. Token验证

最后,我们需要在每个需要身份验证的请求中验证请求头中的Token。可以使用以下代码来实现Token验证:

from flask import Flask, request, jsonify
import mysql.connector
import jwt

app = Flask(__name__)
app.config['SECRET_KEY'] = 'your_secret_key'

# 连接数据库
mydb = mysql.connector.connect(
  host="localhost",
  user="yourusername",
  password="yourpassword",
  database="mydatabase"
)

# 验证Token的装饰器
def token_required(f):
    @wraps(f)
    def decorated(*args, **kwargs):
        token = request.headers.get('Authorization')
        
        if not token:
            return jsonify({'error': 'Token is missing'})
        
        try:
            # 验证Token
            data = jwt.decode(token, app.config['SECRET_KEY'], algorithms=['HS256'])
            current_user = data['username']
        except:
举报

相关推荐

0 条评论