Flask 使用Flask的session来保存用户登录状态例子

使用Python的Flask库实现的登录接口、查询金额接口和注销接口的示例。

  1. 当用户发送POST请求到/login接口时,代码会获取请求中的用户名和密码。如果用户名和密码匹配(在示例中是'admin'和'admin123'),则会将用户名保存在session中,并将session设置为永久有效。这意味着用户在60分钟内可以保持登录状态,即使关闭浏览器或重新启动应用程序。
  2. 当用户发送GET请求到/query_balance接口时,代码首先检查session中是否存在用户名并且用户名为'admin',以确保用户已经登录。如果没有登录或者登录的用户名不是'admin',则返回提示信息"Please login first"。如果用户已经登录,代码可以添加查询金额的逻辑,并将金额作为JSON响应返回给用户。
  3. 当用户发送POST请求到/logout接口时,代码首先检查session中是否存在用户名。如果没有登录,则返回提示信息"Please login first"。如果用户已经登录,代码会从session中删除保存的用户名,并销毁整个session对象,以注销用户。
  4. 这个示例代码使用了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()

 请求登陆接口,登陆成功返回提示

Flask 使用Flask的session来保存用户登录状态例子_第1张图片

 已请求登陆接口,查询金额接口,返回金额Flask 使用Flask的session来保存用户登录状态例子_第2张图片

 请求注销接口,返回注销成功提示Flask 使用Flask的session来保存用户登录状态例子_第3张图片

 未登陆时,请求注销接口,提示请先登陆Flask 使用Flask的session来保存用户登录状态例子_第4张图片

 未登陆时,请求查询金额接口,提示请先登陆Flask 使用Flask的session来保存用户登录状态例子_第5张图片

 

你可能感兴趣的:(#,Flask,flask,python)