cookie和session.py 2.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. # 导入必要的模块
  2. from flask import Flask, request, jsonify, session
  3. # 创建Flask应用实例
  4. app = Flask(__name__)
  5. # 设置应用的密钥,用于加密会话数据
  6. # 必须设置一个安全的密钥,不要在生产环境中使用硬编码的密钥
  7. app.secret_key = "your_secret_key" # 替换为一个安全的密钥
  8. # 登录路由
  9. @app.route("/login", methods=["POST"]) # 直接在这里指定HTTP方法
  10. def login():
  11. """
  12. 处理用户登录请求。
  13. 如果用户名和密码正确,则将用户名存储在session中并返回登录成功的消息。
  14. 如果用户名或密码不正确,则返回相应的错误信息。
  15. """
  16. try:
  17. get_data = request.get_json() # 获取请求体中的JSON数据
  18. username = get_data.get("username") # 获取用户名
  19. password = get_data.get("password") # 获取密码
  20. # 检查用户名和密码是否都存在
  21. if not all([username, password]):
  22. return jsonify(msg="参数不完整"), 400 # 返回参数不完整的错误信息
  23. # 验证用户名和密码是否正确
  24. if username == "asd123" and password == "asdasd":
  25. session["username"] = username # 将用户名存入session
  26. return jsonify(msg="登录成功"), 200 # 返回登录成功的消息
  27. else:
  28. return jsonify(msg="账号或密码错误"), 401 # 返回账号或密码错误的消息
  29. except Exception as e:
  30. return jsonify(error=str(e)), 500 # 返回异常错误信息
  31. # 检查登录状态路由
  32. @app.route("/session", methods=["GET"])
  33. def check_session():
  34. """
  35. 检查当前用户的登录状态。
  36. 如果用户已登录(即session中有用户名),则返回该用户的名称及“已登录”的消息。
  37. 如果用户未登录,则返回“未登录”的消息。
  38. """
  39. try:
  40. username = session.get("username") # 从session中获取用户名
  41. if username is not None: # 如果用户名存在
  42. return jsonify(username=username, msg="已登录"), 200 # 返回用户名及已登录的消息
  43. else:
  44. return jsonify(msg="未登录"), 401 # 返回未登录的消息
  45. except Exception as e:
  46. return jsonify(error=str(e)), 500 # 返回异常错误信息
  47. # 登出路由
  48. @app.route("/logout", methods=["GET"])
  49. def logout():
  50. """
  51. 处理用户登出请求。
  52. 清除session中的所有数据,并返回登出成功的消息。
  53. """
  54. try:
  55. session.clear() # 清除session中的所有数据,clear()等可变数据类型的一个方法,用于移除所有的元素。
  56. return jsonify(msg="成功退出登录"), 200 # 返回登出成功的消息
  57. except Exception as e:
  58. return jsonify(error=str(e)), 500 # 返回异常错误信息
  59. if __name__ == '__main__':
  60. app.run(host="0.0.0.0") # 运行应用,监听所有网络接口,使得局域网内的其他设备也可以访问