问题标签 [flask-httpauth]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
2458 浏览

python - flask-httpauth:get_password 装饰器如何用于基本身份验证?

我想知道是否有人使用这个烧瓶扩展来简化 http-basic-auth。

基本上我不明白这个例子

get_password装饰器似乎返回给定用户的明文密码,如果它与用户提供的密码匹配,则授权将被授予。

但是没有人应该首先访问用户的明文密码。我通常将明文密码和用户名发送到后端,对密码进行哈希处理并将其与数据库中现有的哈希密码进行比较。

这是如何设想的?

更新:

文档的链接提供了更多信息。因为需要第二个装饰器来实现这一点:

从字面上看,规则是get_password(username) == hash_password(password)

我理解这个工作的方式是get_password在数据库中返回用户的哈希密码,它需要等于hash_password方法中定义的当前哈希密码。

问题是,我使用的是passlib 中的 sha256_crypt

在这里,您不能散列给定的密码并将其与存储的散列密码进行比较。我必须使用sha256_crypt.verify(password, hashed_password_in_db)返回 false 或 true 的方法。

有没有办法实现这一点,还是我必须推出自己的自定义解决方案?谢谢

0 投票
1 回答
1220 浏览

python - Flask-HTTPAuth 验证密码

我被flask-httpauth的verify_password卡住了。

我有用户名和密码脚本,它对密码进行哈希处理并将其放入一个简单的文件中。(是的,这不是最安全的,但 LDAP/LOGIN 不能使用我的知识水平与 Flask(Sandman.io) 一起正常工作。我想将它放入 Sandman 正在读取的数据库中以使其更容易,但我尝试的一切这个应用程序在火灾中死亡。)。

在我的包装中,我有一部分用它做成字典

这给了我用于身份验证的字典。如果字典没有散列密码,这将起作用,所以我遇到的问题是让它在这个级别上工作。

我下面的内容不起作用,但使用该示例作为测试用例,我几乎可以使用任何用户名和密码登录(真棒吗?...)

对此的任何帮助将不胜感激。谢谢。

0 投票
2 回答
2219 浏览

python - 烧瓶 http-auth 和单元测试

你好!

我有一条使用 HTTP Basic 身份验证保护的路由,该路由由 Flask-HTTPAuth 实现。如果我使用 curl,一切正常(我可以访问路由),但是在单元测试时,即使我提供了正确的用户名和密码,也无法访问路由。

以下是我的测试模块中的相关代码片段:

以下是 Flask-HTTPAuth 所需的回调方法:

任何我的路线:

单元测试抛出以下异常:

我想再次强调,当我使用为测试客户端提供的完全相同的参数运行 curl 时,一切正常,但是当我运行测试时,verify_password 方法甚至不会被调用。

非常感谢您的帮助!

0 投票
2 回答
1585 浏览

python-2.7 - flask-restful 和 flask-auth :具有不同身份验证的多种 HTTP 方法

我正在尝试使用具有多个 HTTP(GET、POST、PUT、DELETE)方法的相同 url,并且对于每种方法,它使用 flask-auth 进行不同的身份验证。

我尝试创建的不仅仅是类

但发生的事情是restful_api.add_resource(PostUser,'/User')会覆盖restful_api.add_resource(GetUser,'/User')

0 投票
5 回答
7524 浏览

python - Flask-HTTPAuth verify_password 函数未接收用户名或密码

当我尝试使用@auth.login_required装饰器访问路由时,系统会提示我输入用户名和密码。输入此信息后,函数的参数username_or_tokenpassword为。为什么数据是空的?verify_password''

更新

我已将代码简化为:

我正在使用Advanced Rest Client.

http://localhost:8081/myapp/api/token

我还附上了一个Authorization标题。

这导致输出:

Hello, !

日志文件:

我也不再被提示输入我security credentials的。

另一个奇怪的是,即使我将 return 更改为falsein verify_password,我仍然得到相同的输出:Hello, !

0 投票
0 回答
493 浏览

python - 本地主机问题与烧瓶-http auth

我有以下内容:

当我使用 访问api/token路线localhost时,系统会提示我输入我的usernamepassword。之后当我检查我的日志时,我发现username_or_token变量是''.

奇怪的是我已经在我的身上测试了完全相同的代码online server并且没有任何问题..

我正在使用Advanced Rest Client. 使用这个时,我在选项卡下plugin添加并Authorisation header使用下拉字段。在我的.LoginPasswordBasiconline server

我正在使用XAMPP. 不太确定要提供哪些其他信息。

有没有人经历过这种情况?

请求详细信息

HTTPIE 输出

在此处输入图像描述 在此处输入图像描述

再次username设置为''

0 投票
1 回答
1986 浏览

python - 默认 login_required 而不是到处添加装饰器

我正在使用 Flask-HTTPAuth 在我的应用程序中处理身份验证。我有很多观点,我不想login_required每一个都添加。我怎样才能默认要求登录?

0 投票
1 回答
215 浏览

python - flask-httpauth 上的多个 verify_password 回调

开发一个 Flask 应用程序,该应用程序将具有单独的路由类进行身份验证:用户路由和主机路由(想想 Airbnb 的用户和主机差异很大的地方)。

创建单个 verify_password 回调和 login_required 组合非常简单,但这还不够,因为某些路由需要主机身份验证,而其他路由需要用户身份验证。本质上,我需要一个用于用户的 verify_password/login_required 和一个用于主机,但我似乎无法弄清楚如何做到这一点,因为就身份验证的范围而言,回调似乎是全局的。

0 投票
3 回答
958 浏览

python - 我正在重组我的 Flask-restful 应用程序,但在放置 HTTP-auth 以使应用程序运行时遇到问题

本质上,我有一个这样的目录:

在我的 auth.py 中,我有一个标准的基于 HTTP 的用户名/密码身份验证。我将这些用于必须登录的区域,并且我想验证每个用户。Login.py 是我需要添加装饰器的地方,但由于此错误,整个应用程序无法运行: AttributeError: 'module' object has no attribute 'login_required'

我的 login.py 代码,它调用装饰器,然后请求身份验证。

所以总结一下,我的问题是:如何以及在哪里添加flask-httpauth 类,以便我可以使用装饰器。我现在的选择可能是将验证代码粘贴到需要它的每个资源类中,但似乎必须有更好的方法来组织它。帮助?

0 投票
1 回答
2454 浏览

angularjs - 基本身份验证标头似乎丢失了

我正在编写一个 Flask RESTful 服务器和一个 AngularJS 客户端,并且遇到了一个问题,可以这么说,用户名和密码信息似乎在传输中丢失了。

在 Javascript 控制台中,我可以看出客户端正在按预期发送 Authorization 标头:Authorization: Basic username:password。但是,在 @auth.verify_password 回调中,它们都是空的。

我围绕代码的服务器部分进行了相当多的单元测试,并且身份验证信息似乎都存在于所有这些测试中,因此令人放心的是,在某些情况下,我至少可以从标头中获取用户名和密码.

此外,我已将 CORS 扩展添加到服务器代码中,并允许它在服务器范围内使用。似乎总是在 GET(由于用户名和密码问题,返回 401)到同一 url 之前立即调用到以下 url 的 OPTIONS(总是返回 200)。

参考代码:

服务器认证回调:

服务器单元测试代码按预期运行:

AngularJS 代码在浏览器中检查时产生适当的标头,但在身份验证回调中为空用户名和密码: