1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768 |
- # 导入必要的模块
- 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") # 运行应用,监听所有网络接口,使得局域网内的其他设备也可以访问
|