# 导入必要的模块 from flask import Flask, request, jsonify, session # 创建Flask应用实例 app = Flask(__name__) # 设置应用的密钥,用于加密会话数据 # 必须设置一个安全的密钥,不要在生产环境中使用硬编码的密钥 app.secret_key = "your_secret_key" # 替换为一个安全的密钥 # 登录路由 @app.route("/login", methods=["POST"]) # 直接在这里指定HTTP方法 def login(): """ 处理用户登录请求。 如果用户名和密码正确,则将用户名存储在session中并返回登录成功的消息。 如果用户名或密码不正确,则返回相应的错误信息。 """ try: get_data = request.get_json() # 获取请求体中的JSON数据 username = get_data.get("username") # 获取用户名 password = get_data.get("password") # 获取密码 # 检查用户名和密码是否都存在 if not all([username, password]): return jsonify(msg="参数不完整"), 400 # 返回参数不完整的错误信息 # 验证用户名和密码是否正确 if username == "asd123" and password == "asdasd": session["username"] = username # 将用户名存入session return jsonify(msg="登录成功"), 200 # 返回登录成功的消息 else: return jsonify(msg="账号或密码错误"), 401 # 返回账号或密码错误的消息 except Exception as e: return jsonify(error=str(e)), 500 # 返回异常错误信息 # 检查登录状态路由 @app.route("/session", methods=["GET"]) def check_session(): """ 检查当前用户的登录状态。 如果用户已登录(即session中有用户名),则返回该用户的名称及“已登录”的消息。 如果用户未登录,则返回“未登录”的消息。 """ try: username = session.get("username") # 从session中获取用户名 if username is not None: # 如果用户名存在 return jsonify(username=username, msg="已登录"), 200 # 返回用户名及已登录的消息 else: return jsonify(msg="未登录"), 401 # 返回未登录的消息 except Exception as e: return jsonify(error=str(e)), 500 # 返回异常错误信息 # 登出路由 @app.route("/logout", methods=["GET"]) def logout(): """ 处理用户登出请求。 清除session中的所有数据,并返回登出成功的消息。 """ try: session.clear() # 清除session中的所有数据,clear()等可变数据类型的一个方法,用于移除所有的元素。 return jsonify(msg="成功退出登录"), 200 # 返回登出成功的消息 except Exception as e: return jsonify(error=str(e)), 500 # 返回异常错误信息 if __name__ == '__main__': app.run(host="0.0.0.0") # 运行应用,监听所有网络接口,使得局域网内的其他设备也可以访问