python - 我的烧瓶应用程序登录无法正常工作
问题描述
我有一个烧瓶应用程序,在笔记本电脑/台式机上运行良好,但在手机和小屏幕上,登录路径无法正常工作。
当我想在手机上登录我的应用程序时,登录页面会重定向到自身,但什么也没有发生。我认为这个问题与会话或登录装饰功能有关。有时它突然起作用,但它不经常响应。
我现在能做什么?
这是我的应用程序头和登录路线:
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
解决方案
推荐阅读
- powershell - 如何通过 PowerShell 验证 SCCM 操作已完成
- excel - 使用 .ClearContents 时不会重新计算动态命名范围
- css - 颜色样本目录 - 从数据库表中提取 Hex# 颜色代码 - Wordpress
- javascript - 使用节点 js websockets 实时显示温度
- javascript - 如何结合解构赋值和可选链接?
- python - 如何在列表上使用模运算,我希望在每个枚举数字后修改 121?
- spring-boot - 在redis缓存中动态扩展ttl
- sql - 以评论作者和新闻作者为特色。sql
- c# - 如何访问资源子文件夹中文件的路径 (Xamarin.Android)
- javascript - 在 Jqgrid 中的单独行上显示列值