使用Python的Flask库实现的登录接口、查询金额接口和注销接口的示例。
- 当用户发送POST请求到
/login
接口时,代码会获取请求中的用户名和密码。如果用户名和密码匹配(在示例中是'admin'和'admin123'),则会将用户名保存在session中,并将session设置为永久有效。这意味着用户在60分钟内可以保持登录状态,即使关闭浏览器或重新启动应用程序。 - 当用户发送GET请求到
/query_balance
接口时,代码首先检查session中是否存在用户名并且用户名为'admin',以确保用户已经登录。如果没有登录或者登录的用户名不是'admin',则返回提示信息"Please login first"。如果用户已经登录,代码可以添加查询金额的逻辑,并将金额作为JSON响应返回给用户。 - 当用户发送POST请求到
/logout
接口时,代码首先检查session中是否存在用户名。如果没有登录,则返回提示信息"Please login first"。如果用户已经登录,代码会从session中删除保存的用户名,并销毁整个session对象,以注销用户。 - 这个示例代码使用了Flask的session来管理用户登录状态。session是一种在服务器端存储和跟踪用户信息的机制。在这个示例中,session使用了随机生成的密钥来加密和解密数据,以确保安全性。
app.secret_key
用于设置session密钥。
import os
from datetime import timedelta
from flask import Flask, request, session, jsonify
app = Flask(__name__)
app.secret_key = os.urandom(24) # 随机生成session密钥
app.permanent_session_lifetime = timedelta(minutes=60) # 设置session时效为60分钟
@app.route('/login', methods=['POST'])
def login():
username = request.form.get('username')
password = request.form.get('password')
if username == 'admin' and password == 'admin123':
session.permanent = True # 设置session为永久有效
session['username'] = username
return 'Login successful'
else:
return 'Invalid username or password'
@app.route('/query_balance', methods=['GET'])
def query_balance():
if 'username' not in session or session['username'] != 'admin':
return 'Please login first'
# 这里可以添加查询金额的逻辑
balance = 8848
return jsonify({'balance': balance})
@app.route('/logout', methods=['POST'])
def logout():
if 'username' not in session:
return 'Please login first'
session.pop('username', None) # 删除session中的'username'键
session.clear() # 销毁整个session对象
return 'Logout successful'
if __name__ == '__main__':
app.run()
请求登陆接口,登陆成功返回提示
已请求登陆接口,查询金额接口,返回金额
请求注销接口,返回注销成功提示
未登陆时,请求注销接口,提示请先登陆
未登陆时,请求查询金额接口,提示请先登陆