一、安装依赖库
pip install flask
pip install pymysql
pip install pyinstaller
二、app.py
from flask import Flask, json, request, jsonify
import pymysql
import time
import uuid
from werkzeug.utils import redirect
app = Flask(__name__) #实例化Flask 对像
#定义一个链接数据库的函数:
def getdb():
return pymysql.connect(host='192.168.1.1',user='root',password='admin',database='work',charset='utf8')
@app.route('/login',methods = ['get','post'])#定义路由 方法
def login():
username = request.args.get('username')#获取提交参数:
pwd = request.args.get('pwd')#获取提交参数:
db = getdb()#获取数据库链接
c = db.cursor()#获取游标
c.execute('SELECt * FROM users WHERe username = "%s"' % username)#执行SQL语句
r = c.fetchone()#获取执行结果
if r == None:#如果返回值为空
db.close() #关闭数据库
return jsonify({'code':1,'time':int(time.time()),'message':'账号不存在','data':None})#返回json对象
if r[2]!=pwd: #如果密码错误
db.close()
return jsonify({'code':2,'time':int(time.time()),'message':'密码错误','data':None})#返回json对象
if r[2]==pwd:#如果密码正确
token = str(uuid.uuid1()).replace('-','') #生成令牌
c.execute("INSERT INTO `work`.`tokens` (`uid`, `token`, `date`) VALUES (%s, '%s', %s)" % (r[0],token,int(time.time())))#将用户令牌插入数据
db.commit()#提交事务
db.close()
return jsonify({'code':0,'time':int(time.time()),'message':'success','data':{'token':token}}) #返回带令牌的json对象
db.close()
return jsonify({'code':999,'time':int(time.time()),'message':'其他错误','data':None})#出错后返回其他错误
@app.route('/getuserinfo',methods = ['get','post']) #获取用户信息
def getuserinfo():
token = request.args.get('token')
db = getdb()
c = db.cursor()
c.execute('DELETE FROM `work`.`tokens` WHERe `date` < %s' % int(time.time()-600))#执行SQL删除所有过去令牌
db.commit()
c.execute('SELECt * FROM tokens WHERe token = "%s"' % token) #查询令牌是否存在
r = c.fetchone()#从游标里获取结果
if r == None:
db.close()
# return redirect('/static/index.html')
return jsonify({'code':3,'time':int(time.time()),'message':'令牌不存在','data':None})
c.execute('SELECt * FROM users WHERe id = %s' % r[1])# 使用tokens表内的用户ID从用户表获取用户信息
r = c.fetchone()
db.close()
return jsonify({'code':0,'time':int(time.time()),'message':'success','data':{'id':r[0],'username':r[1],'name':r[3]}})#返回结果
@app.route('/')#访问根目录
def index():
return redirect('/static/index.html')#则跳转
if __name__ == '__main__':
app.run(host="0.0.0.0", port = 80, debug = True)
三、/static/index.html
document
{{ userinfo.name }} 您好! 您的用户ID:{{ userinfo.id }} 您的用户名:{{ userinfo.username }}
三、/static/login.html
document