@login_required Flask 应用程序出现问题

2023-11-21

我创建了一个处理身份验证的蓝图。该蓝图使用 Flask-Login。并具有以下内容,以及更多未显示的代码。

在蓝图中我有以下内容:

from flask.ext.login import LoginManager
from flask.ext.login import UserMixin
from flask.ext.login import current_user
from flask.ext.login import login_required
from flask.ext.login import login_user
from flask.ext.login import logout_user

auth_print = Blueprint('auth_print', __name__)
login_manager = LoginManager()
login_manager.login_view = '/login'

class User(UserMixin):

  user_store = {}  # Stores the users that are already logged in.

  def __init__(self, user_id):
    self.user_store[user_id] = self  # add the user to the user_store
    self.username = user_id  # the user_id is in fact the username
    self.id = unicode(user_id)

  def sign_out(self):
    logout_user()
    try:
      del self.user_store[self.id]
    except KeyError:
      pass

  @classmethod
  def get(cls, user_id):
    return cls.user_store.get(user_id)

@login_manager.user_loader
def load_user(user_id):
  return User.get(user_id)

def get_current_user():
  return current_user

@login_required
@auth_print.route('/')
def user():
  return "Welcome, and thanks for logging in."

然后我有一个小应用程序,我想添加身份验证。

小应用程序

import the_above_module
app.register_blueprint(the_above_module.auth_print) # register the blueprint

@the_above_module.login_required
@app.route('/profile')
def protected():
    name = the_above_module.get_current_user().username
    return "Thank you for logging in."

if __name__ == '__main__':
    app.run(host='0.0.0.0', port=8000)

现在我知道蓝图的 @login_required 正在工作,因为如果我打开浏览器并转到 localhost:8000/ 我必须登录。

但是,如果我转到 localhost:8000/profile,则 login_required 装饰器永远不会被触发。因此,我收到错误,因为没有当前用户。

为什么 @login_required 在蓝图中工作而不是在应用程序中工作,即使我确定保持相同的名称空间?


您必须更改装饰器的顺序。引用烧瓶文档:

那么您现在将如何使用该装饰器呢?将其应用为最内层 视图函数的装饰器。当应用更多的装饰器时,总是 请记住,route() 装饰器是最外面的:

@app.route('/secret_page') 
@login_required 
def secret_page():
    pass
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

@login_required Flask 应用程序出现问题 的相关文章

  • 没有名为 crypto.cipher 的模块

    我现在正在尝试加密一段时间 我最近得到了这个基于 python 的密码器 名为PythonCrypter https github com jbertman PythonCrypter 我对 Python 相当陌生 当我尝试通过终端打开 C
  • 通过 Scrapy 抓取 Google Analytics

    我一直在尝试使用 Scrapy 从 Google Analytics 获取一些数据 尽管我是一个完全的 Python 新手 但我已经取得了一些进展 我现在可以通过 Scrapy 登录 Google Analytics 但我需要发出 AJAX
  • Python 的键盘中断不会中止 Rust 函数 (PyO3)

    我有一个使用 PyO3 用 Rust 编写的 Python 库 它涉及一些昂贵的计算 单个函数调用最多需要 10 分钟 从 Python 调用时如何中止执行 Ctrl C 好像只有执行结束后才会处理 所以本质上没什么用 最小可重现示例 Ca
  • SQLAlchemy 通过关联对象声明式多对多自连接

    我有一个用户表和一个朋友表 它将用户映射到其他用户 因为每个用户可以有很多朋友 这个关系显然是对称的 如果用户A是用户B的朋友 那么用户B也是用户A的朋友 我只存储这个关系一次 除了两个用户 ID 之外 Friends 表还有其他字段 因此
  • 将 Matplotlib 误差线放置在不位于条形中心的位置

    我正在 Matplotlib 中生成带有错误栏的堆积条形图 不幸的是 某些层相对较小且数据多样 因此多个层的错误条可能重叠 从而使它们难以或无法读取 Example 有没有办法设置每个误差条的位置 即沿 x 轴移动它 以便重叠的线显示在彼此
  • 如何在flask中使用g.user全局

    据我了解 Flask 中的 g 变量 它应该为我提供一个全局位置来存储数据 例如登录后保存当前用户 它是否正确 我希望我的导航在登录后在整个网站上显示我的用户名 我的观点包含 from Flask import g among other
  • 通过最小元素比较对 5 个元素进行排序

    我必须在 python 中使用元素之间的最小比较次数来建模对 5 个元素的列表进行排序的执行计划 除此之外 复杂性是无关紧要的 结果是一个对的列表 表示在另一时间对列表进行排序所需的比较 我知道有一种算法可以通过 7 次比较 总是在元素之间
  • 使用 matplotlib 绘制时间序列数据并仅在年初显示年份

    rcParams date autoformatter month b n Y 我正在使用 matpltolib 来绘制时间序列 如果我按上述方式设置 rcParams 则生成的图会在每个刻度处标记月份名称和年份 我怎样才能将其设置为仅在每
  • 从字符串中删除识别的日期

    作为输入 我有几个包含不同格式日期的字符串 例如 彼得在16 45 我的生日是1990年7月8日 On 7 月 11 日星期六我会回家 I use dateutil parser parse识别字符串中的日期 在下一步中 我想从字符串中删除
  • 是否可以忽略一行的pyright检查?

    我需要忽略一行的pyright 检查 有什么特别的评论吗 def create slog group SLogGroup data Optional dict None SLog insert one SLog group group da
  • Spark KMeans 无法处理大数据吗?

    KMeans 有几个参数training http spark apache org docs latest api python pyspark mllib html highlight kmeans pyspark mllib clus
  • 如何使用 OpencV 从 Firebase 读取图像?

    有没有使用 OpenCV 从 Firebase 读取图像的想法 或者我必须先下载图片 然后从本地文件夹执行 cv imread 功能 有什么办法我可以使用cv imread link of picture from firebase 您可以
  • BeautifulSoup 中的嵌套标签 - Python

    我在网站和 stackoverflow 上查看了许多示例 但找不到解决我的问题的通用解决方案 我正在处理一个非常混乱的网站 我想抓取一些数据 标记看起来像这样 table tbody tr tr tr td td td table tr t
  • Flask如何获取请求的HTTP_ORIGIN

    我想用我自己设置的 Access Control Allow Origin 标头做出响应 而弄清楚请求中的 HTTP ORIGIN 参数在哪里似乎很混乱 我在用着烧瓶 0 10 1 以及HTTP ORIGIN似乎是这个的特点之一object
  • IO 密集型任务中的 Python 多线程

    建议仅在 IO 密集型任务中使用 Python 多线程 因为 Python 有一个全局解释器锁 GIL 只允许一个线程持有 Python 解释器的控制权 然而 多线程对于 IO 密集型操作有意义吗 https stackoverflow c
  • Pandas:merge_asof() 对多行求和/不重复

    我正在处理两个数据集 每个数据集具有不同的关联日期 我想合并它们 但因为日期不完全匹配 我相信merge asof 是最好的方法 然而 有两件事发生merge asof 不理想的 数字重复 数字丢失 以下代码是一个示例 df a pd Da
  • Python:如何将列表列表的元素转换为无向图?

    我有一个程序 可以检索 PubMed 出版物列表 并希望构建一个共同作者图 这意味着对于每篇文章 我想将每个作者 如果尚未存在 添加为顶点 并添加无向边 或增加每个合著者之间的权重 我设法编写了第一个程序 该程序检索每个出版物的作者列表 并
  • Scrapy:如何使用元在方法之间传递项目

    我是 scrapy 和 python 的新手 我试图将 parse quotes 中的项目 item author 传递给下一个解析方法 parse bio 我尝试了 request meta 和 response meta 方法 如 sc
  • 发送用户注册密码,django-allauth

    我在 django 应用程序上使用 django alluth 进行身份验证 注册 我需要创建一个自定义注册表单 其中只有一个字段 电子邮件 密码将在服务器上生成 这是我创建的表格 from django import forms from
  • 从列表指向字典变量

    假设你有一个清单 a 3 4 1 我想用这些信息来指向字典 b 3 4 1 现在 我需要的是一个常规 看到该值后 在 b 的位置内读写一个值 我不喜欢复制变量 我想直接改变变量b的内容 假设b是一个嵌套字典 你可以这样做 reduce di

随机推荐

  • 在 find + xargs grep 中得到退出代码 123

    这是我的脚本 eval find type f a name h print0 xargs 0 n100 grep f lt echo stdio echo 未找到任何内容 退出代码为 123 如果我稍微修改一下如下 echo stdio
  • 如何获得连续第二高的值?

    我想从数据帧中获取每一行的某个部分的第二高值 我该怎么做呢 我已经尝试过以下代码 但它不起作用 df iloc 5 3 nlargest 2 axis 1 level 2 还有其他方法可以获得这个吗 使用 apply 和 axis 1 您可
  • 读回 sqlite3 中的日期时间

    我正在使用 Python 创建一个带有时间戳列的内存 sqlite3 数据库 当我在查询中对此列使用 min 或 max 时 该列将作为字符串而不是 Python 日期时间对象返回 我读了一篇Stackoverflow 上的上一个问题它为普
  • “eval”和“int”有什么区别

    早些时候我听说eval input a 会自动将字符串转换为 int 但是如果我编码 age eval input enter age 在输入期间我输入 01 这是一个错误 但是当我编码时 age int input enter age 0
  • TFS 2010 新功能 [已关闭]

    这个问题不太可能对任何未来的访客有帮助 它只与一个较小的地理区域 一个特定的时间点或一个非常狭窄的情况相关 通常不适用于全世界的互联网受众 为了帮助使这个问题更广泛地适用 访问帮助中心 有谁知道我可以去哪里获取 TFS 2010 新功能的列
  • 为分组表视图中的每个部分添加阴影

    如图所示 我想向表视图部分添加阴影 就像表视图有 4 个部分一样 表视图中也会有 4 个阴影视图 func numberOfSections in tableView UITableView gt Int 返回 3 func tableVi
  • Backbone.save POST 而不是 PUT

    只是一个简短的问题 拥有模型的新实例并发出model save URL 设置为 api store category Backbone 发出 POST 据我所知 它应该使用 PUT 就像本中提到的那样 PUT 或 POST 故事的其余部分
  • linux/module.h 没有这样的文件或目录

    在我的论文中 我将使用 ARAN 协议创建一个马奈 安装我正在使用的协议本手册 但是第一步 创建trace route 我收到了错误 例如 linux module h No such file or directory linux pro
  • C# 中的finally 块是必须的吗?

    2个条件有什么区别 每次method1和method2运行时 都应该有一个代码块需要运行 在我看来 两种方法是相同的 example method1 void Method1 void try do something catch Exce
  • OnItemLongClickListener 无法在自定义列表视图中工作

    我希望在长时间单击自定义列表视图中的项目后显示上下文菜单 我正在使用动作栏夏洛克 尝试使用 Toast 通知进行调试 我发现长按事件未触发 如何解决这个问题 m vwJokeLayout ListView findViewById R id
  • 是否可以通过 Julia 中的覆盖函数来调用重载函数?

    问题如下 我有一个抽象类型MyAbstract和派生的复合类型MyType1 and MyType2 abstract type MyAbstract end struct MyType1 lt MyAbstract somestuff e
  • 动画剪辑:矩形属性?

    我想为 css 属性设置动画clip rect与 jQuery 的 animate 但无法找到这是否可能在任何地方 试过 img1 animate clip rect 1px 945px 499px 1px 300 没有任何运气 有人知道吗
  • 在 C 中转换为 ASCII

    使用微控制器 PIC18F4580 我需要收集数据并将其发送到 SD 卡以供以后分析 它收集的数据的值介于 0 到 1023 或 0x0 到 0x3FF 之间 所以我需要做的是将 1023 转换为以 10 为基数的 ASCII 值字符串 0
  • 使用 AutoIt 发送电子邮件

    如何使用 AutoIt 发送电子邮件 只需要一个干净的示例和解释 其中包含 to from subject message 使用内置代码有两种主要方法 INetMail 或 INetSmtpMail 以下是帮助文件中的简单代码示例 如果您对
  • 从 iOS 应用程序上传文件到 ftp

    我读了SimpleFTP示例但我需要一个比这个文档更好的例子 我在 Google 上搜索了一些其他示例 但我发现的所有网站最终都引用了 Apple 文档 而且我还没有找到任何其他没有引用的内容 有人能帮我吗 谢谢 为 iOS 编写了一个易于
  • Global const string& 对我来说很难闻,它真的安全吗?

    我正在审查一位同事的代码 我发现他在全局范围内定义了几个常量 如下所示 const string SomeConstant This is some constant text 就我个人而言 这对我来说很糟糕 因为该引用指的是我假设是从给定
  • AFNetworking后台文件上传

    我想从我的应用程序将文件上传到我的服务器 当应用程序处于活动状态时 下面的代码运行良好 如果我按主页按钮或打开另一个应用程序 上传就会停止 我激活了后台获取但仍然无法工作 Afnetworking 有后台支持 但我不知道如何在我的代码中实现
  • 将foreignKey小部件添加到django-import-export

    我正在尝试将数据导入到我的模型之一 但它失败了 因为我正在尝试上传foreignKey Id 而不是导入导出创建的迭代数 模型 py from django db import models from import export impor
  • 将数字四舍五入到最接近的 5 的倍数

    有谁知道如何将数字四舍五入到最接近的 5 倍数 我找到了一种算法将其四舍五入到最接近的 10 倍数 但我找不到这个算法 这样就可以做十 个了 double number Math round len 5 10 0 10 0 要四舍五入到最接
  • @login_required Flask 应用程序出现问题

    我创建了一个处理身份验证的蓝图 该蓝图使用 Flask Login 并具有以下内容 以及更多未显示的代码 在蓝图中我有以下内容 from flask ext login import LoginManager from flask ext