首页 > 解决方案 > 我的烧瓶应用程序登录无法正常工作

问题描述

我有一个烧瓶应用程序,在笔记本电脑/台式机上运行良好,但在手机和小屏幕上,登录路径无法正常工作。

当我想在手机上登录我的应用程序时,登录页面会重定向到自身,但什么也没有发生。我认为这个问题与会话或登录装饰功能有关。有时它突然起作用,但它不经常响应。

我现在能做什么?

这是我的应用程序头和登录路线:

from cs50 import SQL
from math import ceil
from flask import Flask, flash, redirect, render_template, request, session
from flask_session import Session
from tempfile import mkdtemp
from werkzeug.security import check_password_hash, generate_password_hash
from helpers import intro_alert, main_alert, login_required, usd, ex_separator, separator, \
                    cmc_logo, exchange_rates, cmc_quote, cmc_listing, cmc_info, exchanges, exchange_pairs, cmc_projects


coinjito = Flask(__name__)
coinjito.config["TEMPLATES_AUTO_RELOAD"] = True


@coinjito.after_request
def after_request(response):

    response.headers["Cache-Control"] = "no-cache, no-store, must-revalidate"
    response.headers["Expires"] = 0
    response.headers["Pragma"] = "no-cache"

    return response


coinjito.config["SESSION_FILE_DIR"] = mkdtemp()
coinjito.config["SESSION_PERMANENT"] = False
coinjito.config["SESSION_TYPE"] = "filesystem"
Session(coinjito)

@coinjito.route("/login", methods=["GET", "POST"])
def login():

    session.clear()

    if request.method == "GET":

        return render_template("login.html")

    else:

        rows = db.execute("SELECT * FROM users WHERE username=:username",
                          username=request.form.get("username"))

        if len(rows) != 1 or not check_password_hash(rows[0]["password"], 
                                                     request.form.get("password")):

            return intro_alert("Apology", "alert-danger", "Login Failed",
                             "Invalid username and/or password.", "/login", "Go Back")

        session["user_id"] = rows[0]["id"]
        session["username"] = rows[0]["username"]

        return redirect("/tracking")

@coinjito.route("/tracking")
@login_required

这是我的登录助手功能:

def login_required(f):

    @wraps(f)
    def decorated_function(*args, **kwargs):

        if session.get("user_id") is None:

            return redirect("/login")

        return f(*args, **kwargs)

    return decorated_function

标签: pythonflask

解决方案


推荐阅读