首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >验证_users密码

验证_users密码
EN

Stack Overflow用户
提问于 2016-05-19 13:13:52
回答 2查看 226关注 0票数 1

如何验证给定的密码是否与arangoDB中的集合arangoDB中的密码匹配?

我知道这可以用Foxx应用程序和arangosh来完成,但我不会使用它们,因为我在python中使用了自己的API。所以我不知道如何在不使用Foxx或arangosh的情况下访问密码并检查是否与给定的密码匹配。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-05-20 14:16:49

您不应该依赖系统_users集合作为自己的用户逻辑。该集合严格地用于ArangoDB自己的用户对象,而不是应用程序级的用户管理。

如果您确实想使用ArangoDB自己的用户管理,那么在禁用身份验证时,最好的方法是在ArangoDB中使用ArangoDB模块(例如使用Foxx)。该模块提供一个isValid方法,该方法接受用户名和密码,并返回一个布尔值,指示组合是否有效:

代码语言:javascript
运行
复制
var users = require('org/arangodb/users');
controller.post('/checkpw', function (req, res) {
  var credentials = req.params('credentials');
  res.json({
    valid: users.isValid(
      credentials.username,
      credentials.password
    )
  });
})
.bodyParam('credentials', joi.object({
  username: joi.string().required(),
  password: joi.string().required()
}).required());

用户HTTP目前没有公开此方法,因此这是在不依赖极其不稳定的实现细节的情况下( _users集合的格式在2.x期间发生了更改,并且集合将来可能再次更改)的唯一方法。

编辑: ArangoDB 3.0可能会添加一个API路由,当提供有效的用户名和密码时,它将返回一个令牌(而不是将数据库中的会话对象弄乱)。这将使集成内置用户管理变得更容易,但注意事项仍然相同: ArangoDB用户主要用于API级别的授权,而不是应用程序逻辑。

票数 2
EN

Stack Overflow用户

发布于 2016-05-19 14:24:16

最简单的方法是简单地尝试一个平面http请求,并检查其结果。最简单的调用是_api/version;我们在数据库前缀以确定是否允许用户访问特定的数据库。在本例中,我们使用_system;您需要用要测试身份验证的数据库替换它。

代码语言:javascript
运行
复制
curl --dump - http://Joe:passvoid@localhost:8529/_db/_system/_api/version
GET /_db/_system/_api/version HTTP/1.1
Authorization: Basic Sm9lOnBhc3N2b2lk
User-Agent: curl/7.38.0
Host: localhost:8529
Accept: */*


HTTP/1.1 200 OK
Server: ArangoDB
Connection: Keep-Alive
Content-Type: application/json; charset=utf-8
Content-Length: 37

{"server":"arango","version":"2.8.8"}

curl --dump - http://Joe:WRONGpassvoid@localhost:8529/_db/_system/_api/version 
GET /_db/_system/_api/version HTTP/1.1
Authorization: Basic Sm9lOldST05HcGFzc3ZvaWQ=
User-Agent: curl/7.38.0
Host: localhost:8529
Accept: */*

HTTP/1.1 401 Unauthorized
Server: ArangoDB
Content-Type: text/plain; charset=utf-8
Www-Authenticate: basic realm="arangodb/_system"
Connection: Keep-Alive
Content-Length: 0

因此,您需要检查HTTP状态代码:200 ->成功;401 ->失败。有关特定于python的http处理的详细信息,请参见howto create authentication headers with python

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37324318

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档